system . security . cryptographic . cryptographicexception:系



在apphorbor上托管的MVC解决方案遇到了一个奇怪的问题。在本地它运行得很好,但我得到一个异常抛出给我时,在生产(外观)。

堆栈跟踪代码:

string keyFilePath = HttpContext.Current.Server.MapPath("~/key.p12");
string serviceAccountEmail = "my-email-here@developer.gserviceaccount.com";
var certificate = new X509Certificate2(keyFilePath, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
   {
      Scopes = new[] { "https://spreadsheets.google.com/feeds/" }
   }.FromCertificate(certificate));

进一步跳到这个问题,问题来自我的代码的第一行:

string keyFilePath = HttpContext.Current.Server.MapPath("~/key.p12");

检查构建后,似乎我的钥匙。P12甚至不在服务器上(甚至在推送之后)。apphor是否拒绝某些文件?

apphor不拒绝某些文件,但MsBuild配置为使用显式输出目录。这可能与您的本地环境不同,在本地环境中,解决方案通常构建在同一目录中。默认情况下,apphor使用的MsBuild目标不会复制某些文件,除非您显式地配置它。

这个问题可以通过在项目中引用证书文件,然后将"Build Action"属性设置为"Content"来修复。这将导致文件被复制到输出目录。

另一种解决方案是将证书作为嵌入式资源嵌入,这里初始化一个嵌入式证书并将其安装在用户的证书存储库中。请注意,通常不需要安装证书就可以使用它。

相关内容

  • 没有找到相关文章

最新更新