远程服务器返回了一个错误: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异常,为什么它抛出它?

远程服务器返回了一个错误:NotFound

查看WebException对象的Status属性,获取异常的详细原因。如果你的应用程序发送一个https请求,也可能是一个证书问题。

当您访问Result属性时,OpenReadCompleted事件处理程序会异步引发异常,因此无法以描述的方式捕获异常。如果发生错误,您无法获得Result,因此会引发异常。为了处理它,将try catch块放在事件处理程序中,但实际上为了防止异常,在发生错误时不要将Result传递给回调。

调试它并尝试在浏览器中打开您正在下载的图像的完整地址。也许url中缺少斜杠之类的。

相关文章: