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是此类支持的唯一证书格式"
这正是我的格式。
你知道吗,因为我认为我测试了所有东西,没有任何效果。
证书是可以的,并且在控制台应用程序上加载良好。
你有什么想法吗?你能帮我吗?
提前感谢,
证书包含二进制内容,不应该使用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);