【问题标题】:Windows Phone 7 - can not load certificate in C# codeWindows Phone 7 - 无法在 C# 代码中加载证书
【发布时间】:2013-09-01 09:08:03
【问题描述】:

我正在为连接到 Web 服务器的 WP7 创建应用程序。我的应用程序上有服务器根证书,我需要在我的应用程序中读取它以比较整个证书路径等。这是我读取文件的代码:

var resourceStream = Application.GetResourceStream(new Uri("myCert.der", UriKind.Relative)); 
var content = Encoding.UTF8.GetBytes(new StreamReader(resourceStream.Stream).ReadToEnd()); 
X509Certificate cert = new X509Certificate(content);

但在最后一行发生了异常:

[Cryptography_LegacyNetCF_UnknownError] 参数:80092009 调试资源字符串不可用。通常,关键和论据提供了足够的信息来诊断问题。见http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50829.0&File=mscorlib.dll&Key=Cryptography_LegacyNetCF_UnknownError

堆栈跟踪:

在 System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 小时) 在 System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType(Byte[] rawData) 在 System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(字节 [] rawData,对象密码,X509KeyStorageFlags keyStorageFlags) 在 System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data)

在msdn页面http://msdn.microsoft.com/en-us/library/5128sby8(v=vs.95).aspx我读到了 "ASN.1 DER 是该类唯一支持的证书格式"

这正是我的格式。

你有什么想法吗,因为我认为我测试了所有东西都没有任何效果。

证书没问题,并且在控制台应用程序上加载良好。

你有什么想法,可以帮帮我吗?

提前致谢,

【问题讨论】:

    标签: c# windows-phone-7 x509certificate root-certificate


    【解决方案1】:

    证书包含二进制内容,您不应该使用StreamReader 来读取它(它只能用于文本)。

    相反,直接从流中读取内容:

    var resourceStream = Application.GetResourceStream(new Uri("myCert.der", UriKind.Relative));
    
    var content = new byte[resourceStream.Stream.Length];
    resourceStream.Stream.Read(content, 0, content.Length);
    
    X509Certificate cert = new X509Certificate(content);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 2011-07-28
      相关资源
      最近更新 更多