我正在为WP8开发程序,它从JSON中检索数据。连接是安全的(网址以https开头)。有时候它可以正常工作,但有时候我开始接受例外 System.Net.WebException: The remote server returned an error: NotFound.
而且这个例外开始显示所有对所有https URL的请求。对于http URL,一切都很顺利。 URL确定,它在模拟器上的IE中打开。 我认为,证书可能存在问题,但它为什么有时会起作用?在Windows Phone 8仿真器上找不到SSL证书
public static void SendRequest(string requestUrl, Action<Stream, Exception> callback)
{
var targetUri = new Uri(requestUrl);
var request = (HttpWebRequest)WebRequest.Create(targetUri);
request.Method = "POST";
request.BeginGetResponse(ar => ProcessResponse(ar, callback), request);
}
public static void ProcessResponse(IAsyncResult callbackResult, Action<Stream, Exception> callback)
{
try
{
var myRequest = (HttpWebRequest)callbackResult.AsyncState;
var myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult);
callback(myResponse.GetResponseStream(), null);
myResponse.Close();
}
catch (Exception e)
{
callback(Stream.Null, e);
Debug.WriteLine("Error in RequestHelper.ProcessResponse\nErrorMessage - " + e.Message);
}
}
更新:问题绝对是SSL证书。当我试图在WebBrowser控件上打开网页时,我收到了一条消息 - “我们遇到了该网站的安全证书问题。”我点击了“继续访问网站”,但没有任何变化。 该页面仍然可以通过模拟器上的IE打开。 我已经尝试安装证书(从网站导出,并用IE下载它,我已收到消息,证书已成功添加,但我仍然在WebBrowser控件上出现错误消息 有没有什么办法可以安装证书呢?还是没有检查它的有效性?
“远程服务器返回的NotFound”表明它可能是HTTP级别上的问题(请求未知资源),而不是指示证书相关问题。我建议倾销您请求的URL并在错误发生时分析它 - 这会否认或证实我的假设。与SSL相关的问题很难跟踪,因为有很多东西可以在“远程服务器”上找不到(CRL和OCSP响应,当选中时,可能无法访问或丢失)。 –
向帖子添加了代码。我在调用EndGetResponse时发生错误。我的想法是在模拟器中,因为我没有更改请求的url。它在一段时间内工作正常。在任何构建之后,它可能会被破坏。请求的URL不会更改。 – vzaverugo
现在,你知道如何检查wp中的根CA列表吗?我也想知道我的自签名证书是否安装成功。 – IloveIniesta