繁体   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