簡體   English   中英

C# 方法適用於本地 Web 服務器,但不適用於 azure Web 應用程序。 找不到文件錯誤

[英]C# method works in local web server but not in azure web app. File not found error

我正在使用一個名為 FirmadorXadesNetCore 的庫來簽署 xml 文件。 我在 VS2019 中使用 nuget 包管理器導入了它,我使用的是 1.1.0 版。

調用線路時出現問題

            parametros.Signer = new FirmaXadesNetCore.Crypto.Signer(cert);

使用本地 IIS 服務器運行 Web 應用程序,它工作正常,但使用 Azure Web 應用程序會引發錯誤“找不到文件”。

cert 變量在兩種環境中都正確加載了證書,所以我不確定問題是什么。

任何見解將不勝感激。

我認為發生此錯誤是因為未找到.xml文件。

原因是程序發布時,只會包含默認的文件和文件夾,不會包含自定義的文件和文件夾。 您需要修改.csproj才能實現。

解決步驟:

1.通過kudu檢查.xml文件是否存在。

2.如果不存在,通過修改.csproj文件來修改發布文件的內容。

修改后的示例代碼如下:

<Project Sdk="Microsoft.NET.Sdk.Web">

 <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
 </PropertyGroup>
 <ItemGroup>
   <ResolvedFileToPublish Include="test.xml">
     <RelativePath>TextFile.txt</RelativePath>
   </ResolvedFileToPublish>
 </ItemGroup>
</Project>

有關更多詳細信息,您可以在另一篇文章中查看我的答案

我聯系了 Microsoft Azure 支持,結果是使用本地證書存儲來讀取證書。

我一直在使用免費層進行測試,微軟指出免費層或共享層不允許訪問證書存儲。 解決方案是升級到至少一個基本計划。

這是有關如何加載證書的鏈接,它說明它適用於基本計划及以上https://docs.microsoft.com/en-us/azure/app-service/configure-ssl-certificate-in-code#從文件加載證書

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM