我正在为WP8开发程序,它从JSON中检索数据。连接是安全的(url以https开头)。有时它工作正常,但有时我开始接收异常
System.Net.WebException: The remote server returned an error: NotFound.
此异常开始显示对所有https URL的所有请求。对于http URL,一切都很顺利。 URL正常,它在模拟器上的IE中打开。
我认为,证书可能存在问题,但有时为什么会有效?
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控件上有错误消息。 有没有办法安装证书?或者不检查它的有效性?
答案 0 :(得分:1)
自签名证书工作正常,但您的证书中需要正确的通用名称(CN)。 CN必须与您的服务器域相同
并且您需要导入证书。到你的手机
答案 1 :(得分:0)
我在https
与服务器通信的两个应用程序中遇到了同样的问题,但我还没有找到解决方法。但我砍了它。当我收到WebException: Remote server not found
时,我会检查StatusCode
Response
和Status
网络例外,如果Status
不是RequestCancelled
(你在快速应用切换中获得这样的状态)我重复请求。它看起来像这样:
var httpStatusCode = ((HttpWebResponse) webException.Response).StatusCode;
if (httpStatusCode == HttpStatusCode.NotFound ||
httpStatusCode == HttpStatusCode.GatewayTimeout ||
httpStatusCode == HttpStatusCode.InternalServerError)
{
if (webException.Status == WebExceptionStatus.UnknownError && !configuration.IsResending)
{
configuration.IsResending = true;
ResendRequest(configuration, successAction);
return;
}
configuration.IsResending = false;
throw new ServerTemporaryUnavailabeException();
}
第二次执行请求时不会返回WebException: Not found
。