C# 在Azure网站上使用RSACryptServiceProvider会导致文件未找到错误

C# 在Azure网站上使用RSACryptServiceProvider会导致文件未找到错误,c#,asp.net,azure,cryptography,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 = "MyKeyNa

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

建议您查看此帖子的答案,这将为您提供所需信息:我们在这方面遇到了类似的问题,并最终指定了一个临时密钥-无论出于何种原因,UseMachineKeyStore始终引发未找到文件路径的异常。如果不确切了解Azure网站在做什么,显然机器密钥存储路径在这种情况下不起作用,并且临时密钥不会持久化,并且工作正常。但这取决于应用程序。