我正在把一个现有的(和工作的)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);

最后一行引发了密码异常,消息是“系统找不到指定的文件”。
我没有将密钥或容器放入azure-我的理解是,服务提供商将创建一个密钥或容器。
我已经复习过了,但没有得到任何线索。
很明显我遗漏了一些基本的东西。

最佳答案

谢谢西蒙-这给了我正确的方向。
原来您需要指定在机器存储中创建密钥。有效的代码是:

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

注意添加了指定“usemachinekeystore”的行

08-04 09:09