Azure 函数无法加载文件或程序集“System.Security.Cryptography.Pkcs”
Posted
技术标签:
【中文标题】Azure 函数无法加载文件或程序集“System.Security.Cryptography.Pkcs”【英文标题】:Azure Function Could not load file or assembly 'System.Security.Cryptography.Pkcs' 【发布时间】:2021-12-06 08:55:08 【问题描述】:我最近尝试在 C# .NET Core 3.1 Web 应用程序中解密和验证 PKCS#7 消息。 Here is how I did it.
我在 Web 应用项目中使用了 System.Security.Cryptography.Pkcs
。但是在实现相同的包并尝试在 Azure 函数中解密和验证后,它返回异常
"Could not load file or assembly 'System.Security.Cryptography.Pkcs, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.":"System.Security.Cryptography.Pkcs, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
.
我尝试了几个堆栈溢出答案,但无法对其进行排序。
System.Security.Cryptography.X509Certificates
在 Azure 函数中运行良好,但 Pkcs
似乎有问题。
无论如何我可以解决它?
这是我的 .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
<UserSecretsId>695a883e-9b1a-4d55-98a9-0b47b683bbb2</UserSecretsId>
<Nullable>annotations</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="6.1.0" />
<PackageReference Include="Dapper" Version="2.0.78" />
<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.15.0" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.4.2" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
<PackageReference Include="System.Collections" Version="4.3.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
【问题讨论】:
能否分享您的 .csproj 文件包参考资料 我现在用 .csproj 文件更新了问题。 你在类文件中导入System.Security.Cryptography.Pkcs
命名空间了吗?
我能够解决问题following the answer mentioned here.
【参考方案1】:
Mishra](https://***.com/users/13378259/rocky-mishra) 很高兴您的问题得到解决,并将您的建议作为答案发布,以帮助面临类似问题的其他社区成员。
下面的示例代码有助于解决问题。
public class FunctionsAssemblyResolver
public static void RedirectAssembly()
var list = AppDomain.CurrentDomain.GetAssemblies().OrderByDescending(a => a.FullName).Select(a => a.FullName).ToList();
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
var requestedAssembly = new AssemblyName(args.Name);
Assembly assembly = null;
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
try
assembly = Assembly.Load(requestedAssembly.Name);
catch (Exception ex)
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
return assembly;
更多信息请查看SO。
【讨论】:
以上是关于Azure 函数无法加载文件或程序集“System.Security.Cryptography.Pkcs”的主要内容,如果未能解决你的问题,请参考以下文章
发布到 Azure 网站后无法加载文件或程序集 System.Web.Http.WebHost
Azure 函数 5 和 EF Core 5 无法加载文件或程序集 > Microsoft.Extensions.DependencyInjection.Abstractions
部署 Azure 函数时无法从程序集“System.Runtime”加载类型“System.IO.Path”
无法加载文件或程序集“Microsoft.WindowsAzure.Storage”Azure 函数
无法在引用类库的 azure 函数中加载文件或程序集“System.Data.Entity 4.0.0.0”
Azure Functions - 无法加载文件或程序集“Microsoft.WindowsAzure.Storage”