Windows Phone 7-无法加载C#代码中的证书

本文关键字:代码 证书 加载 Phone Windows | 更新日期: 2023-09-27 18:29:51

我正在创建连接到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&版本=4.0.50829.0&文件=mscorlib.dll&密钥=Cryptory_LegacyNetCF_UnknownError

堆栈跟踪:

在System.Security.Cryptography.CryptographicException.SthrowCryptographicException(Int32小时)位于System.Security.Cryptography.X509Certificates.X509Utils._QueryCertBlobType(Byte[]rawData)位于System.Security.Cryptography.X509Certificate.X509Certificate.LoadCertificateFromBlob(Byte[]rawData,Object password,X509KeyStorageFlags keyStorageFlags)在System.Security.Cryptography.X509Certificate.X509Certificate.ctor(Byte[]data)

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

这正是我的格式。

你知道吗,因为我认为我测试了所有东西,没有任何效果。

证书是可以的,并且在控制台应用程序上加载良好。

你有什么想法吗?你能帮我吗?

提前感谢,

Windows Phone 7-无法加载C#代码中的证书

证书包含二进制内容,不应该使用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);