远程服务器返回了一个错误:NotFound
本文关键字:一个 错误 NotFound 服务器 返回 | 更新日期: 2023-09-27 18:16:48
我在一个Windows Phone 7.5及以上版本的项目中工作。
我使用一种方法来获取在线图像并检查图像的类型,如果它是gif,那么我会将其转换为jpg并将其绑定到图像控件,如果是jpg和png,则无需编码即可绑定。
但是下面的代码经常抛出错误,"远程服务器返回了一个错误:NotFound",为什么?我已经捕获了webeexception .
public void GetOnlineImageAndReturnJPGStream(Action<Stream, string> callback, string uriString)
{
string errorstring = "";
try
{
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.Referer] = "http://www.xici.net";
wc.AllowReadStreamBuffering = true;
wc.OpenReadCompleted += (s, e) =>
{
if (e.Error == null && !e.Cancelled)
{
//check pic type
ImageTypeCheck.ImageType incomingIMGType = ImageTypeCheck.getImageType(e.Result);
switch (incomingIMGType)
{
case ImageTypeCheck.ImageType.Gif://if gif
//deal with gif
case ImageTypeCheck.ImageType.Null:
case ImageTypeCheck.ImageType.Bmp:
//deal with bmp
case ImageTypeCheck.ImageType.Jpg:
case ImageTypeCheck.ImageType.Png:
//deal with jpg and png
}
}
else
{
errorstring = e.Error.Message;
callback(e.Result, errorstring);
}
};
wc.OpenReadAsync(new Uri(uriString, UriKind.Absolute));
}
catch (WebException webEx)
{
App.ShowToastNotification(webEx.Message);
}
}
异常如下:
{System.Net。web异常:远程服务器返回错误:NotFound。--> system.net.webeexception:远程服务器返回了一个错误:NotFound。在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse (IAsyncResultasyncResult)System.Net.Browser.ClientHttpWebRequest灵活;> c_ DisplayClasse.b _d(对象sendState)System.Net.Browser.AsyncHelper灵活;> c_ DisplayClass1.b _0(对象sendState)——内部异常堆栈跟踪结束——atSystem.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary ()在System.Net.OpenReadCompletedEventArgs.get_Result(xicihutong.DataServiceAgent.ServiceAgent灵活;> c_ DisplayClassa.b _8(对象1、OpenReadCompletedEventArgs ()System.Net.WebClient。OnOpenReadCompleted (OpenReadCompletedEventArgs e)在System.Net.WebClient。OpenReadOperationCompleted(对象参数)}[System.Net。WebException]: {System.Net。webeexception:远程服务器返回一个错误:NotFound。--> system.net.webeexception远程服务器返回一个错误:NotFound。在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse (IAsyncResultasyncResult)System.Net.Browser.ClientHttpWebRequest灵活;> c_ DisplayClasse.b _d(对象sendState)System.Net.Browser.AsyncHelper灵活;> c_ DisplayClass1.b _0(对象sendState)——内部异常堆栈跟踪结束——atSystem.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary ()在System.Net.OpenReadCompletedEventArgs.get_Result(xicihutong.DataServiceAgent.ServiceAgent灵活;> c_ DisplayClassa.b _8(对象1、OpenReadCompletedEventArgs ()System.Net.WebClient。OnOpenReadCompleted (OpenReadCompletedEventArgs e)在System.Net.WebClient。OpenReadOperationCompleted(对象参数)}_className:"System.Net.WebException"_data:零_dynamicMethods:零_exceptionMethod:零_exceptionMethodString:零_helpURL:零_HResult: -2146233079 innerException: {System.Net。webeexception:远程服务器返回一个错误:NotFound。在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse (IAsyncResultasyncResult)System.Net.Browser.ClientHttpWebRequest灵活;c> _DisplayClasse.b_ d(对象sendState)System.Net.Browser.AsyncHelper灵活;c> _DisplayClass1.b__0(对象sendState)}_ipForWatsonBuckets: 0_message: "远程服务器返回了一个错误:NotFound。"_remoteStackIndex: 0_remoteStackTraceString:零_source:零_stackTrace: {sbyte [96]}_stackTraceString:零_watsonBuckets:{字节[5616]}_xcode: -532462766 xptrs: 0数据:{System.Collections.ListDictionaryInternal}HelpLink:零HResult: -2146233079InnerException: {System.Net。webeexception:远程服务器返回一个错误:NotFound。在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse (IAsyncResultasyncResult)System.Net.Browser.ClientHttpWebRequest灵活;c> _DisplayClasse.b_ d(对象sendState)System.Net.Browser.AsyncHelper灵活;c> _DisplayClass1.b__0(对象sendState)}IPForWatsonBuckets: 0消息:"远程服务器返回了一个错误:NotFound。"RemoteStackTrace:零来源:"系统"StackTrace: " at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()'r'n在System.Net.OpenReadCompletedEventArgs.get_Result()'r'n atxicihutong.DataServiceAgent.ServiceAgent灵活;> c_ DisplayClassa.b _8(对象s, OpenReadCompletedEventArgs e)'r'n atSystem.Net.WebClient.OnOpenReadCompleted (OpenReadCompletedEventArgse)'r'n at System.Net.WebClient.OpenReadOperationCompleted(Objectarg)"WatsonBuckets:{字节[5616]}
为什么?如何处理呢?
不幸的是,我发布的错误信息是一个Unhandle异常,并告诉我,我们的服务器返回一个错误,但我认为我已经抓住了404错误在Unhandle异常,为什么它抛出它?
查看WebException
对象的Status
属性,获取异常的详细原因。如果你的应用程序发送一个https请求,也可能是一个证书问题。
当您访问Result
属性时,OpenReadCompleted
事件处理程序会异步引发异常,因此无法以描述的方式捕获异常。如果发生错误,您无法获得Result
,因此会引发异常。为了处理它,将try catch
块放在事件处理程序中,但实际上为了防止异常,在发生错误时不要将Result
传递给回调。
调试它并尝试在浏览器中打开您正在下载的图像的完整地址。也许url中缺少斜杠之类的。