将我的网站发布到iis后,我收到错误消息:
Internal.Cryptography.CryptoThrowHelper + WindowsCryptographicException: 系统找不到指定的文件
我从嵌入式文件中读取X509Certificate2的代码是:
X509Certificate2 certificate = null;
using (var certStream = typeof(T).Assembly.GetManifestResourceStream(resourceName))
{
using (var memory = new MemoryStream((int)certStream.Length))
{
certStream.CopyTo(memory);
certificate = new X509Certificate2(memory.ToArray(), password);
}
}
此错误仅发生在Windows服务器IIS中,但如果直接运行Kestrel并且在IIS Express中没有问题,则查找。
接缝文件被读取为非托管内存。
答案 0 :(得分:0)
我遇到了同样的问题,添加了X509KeyStorageFlags.MachineKeySet可以解决问题。
certificate = new X509Certificate2(memory.ToArray(), password, X509KeyStorageFlags.MachineKeySet);
在这里找到解决方案:
https://github.com/dotnet/corefx/issues/27358#issuecomment-385433985,