在Azure网站上使用RSACryptoServiceProvider会导致找不到文件错误

时间:2014-11-20 21:38:37

标签: c# asp.net azure cryptography

我正在将现有(和工作)的ASP.NET网站移动到Azure网站。该站点上的一些功能是签署XML文档。获取密钥的代码是:

// retrieve a key from the key safe - this will create it if it does not exist yet
System.Security.Cryptography.CspParameters csp = new CspParameters();
csp.KeyContainerName = "MyKeyName";
System.Security.Cryptography.RSACryptoServiceProvider key = new RSACryptoServiceProvider(csp);

最后一行是抛出CryptographicException,并显示消息“系统找不到指定的文件”。

我没有将密钥或容器放入Azure - 我的理解是ServiceProvider会创建一个。 我查看了this article,但没有得到任何线索。

显然我缺少一些基本的东西。

1 个答案:

答案 0 :(得分:7)

谢谢西蒙 - 这使我指向了正确的方向。

事实证明,您需要指定在计算机商店中创建密钥。有效的代码是:

System.Security.Cryptography.CspParameters csp = new CspParameters();
csp.KeyContainerName = "MyKeyName";
csp.Flags = CspProviderFlags.UseMachineKeyStore;

请注意添加指定“UseMachineKeyStore”

的行