gpt4 book ai didi

c# - 如何捕捉远程服务器返回错误: NotFound?

转载 作者:行者123 更新时间:2023-11-30 17:04:55 24 4
gpt4 key购买 nike

我的项目目标是 Windows Phone 7.5 及更高版本。

我使用一种方法来获取在线图像并检查图像的类型,如果是 gif 则将其转换为 jpg 并将其绑定(bind)到图像控件,如果是 jpg 和 png,则不进行编码即可绑定(bind)。< br/>

但是下面的代码非常频繁地抛出错误,“远程服务器返回错误:NotFound”,为什么?我已经捕获了 WebException。

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.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.ClientHttpWebRequest.<>c_DisplayClasse.b_d(Object sendState) at System.Net.Browser.AsyncHelper.<>c_DisplayClass1.b_0(Object sendState) --- End of inner exception stack trace --- at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() at System.Net.OpenReadCompletedEventArgs.get_Result() at xicihutong.DataServiceAgent.ServiceAgent.<>c_DisplayClassa.b_8(Object s, OpenReadCompletedEventArgs e) at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e) at System.Net.WebClient.OpenReadOperationCompleted(Object arg)} [System.Net.WebException]: {System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.ClientHttpWebRequest.<>c_DisplayClasse.b_d(Object sendState) at System.Net.Browser.AsyncHelper.<>c_DisplayClass1.b_0(Object sendState) --- End of inner exception stack trace --- at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() at System.Net.OpenReadCompletedEventArgs.get_Result() at xicihutong.DataServiceAgent.ServiceAgent.<>c_DisplayClassa.b_8(Object s, OpenReadCompletedEventArgs e) at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e) at System.Net.WebClient.OpenReadOperationCompleted(Object arg)} _className: "System.Net.WebException" _data: null _dynamicMethods: null _exceptionMethod: null _exceptionMethodString: null _helpURL: null _HResult: -2146233079 innerException: {System.Net.WebException: The remote server returned an error: NotFound. at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.ClientHttpWebRequest.<>c_DisplayClasse.b_d(Object sendState) at System.Net.Browser.AsyncHelper.<>c_DisplayClass1.b__0(Object sendState)} _ipForWatsonBuckets: 0 _message: "The remote server returned an error: NotFound." _remoteStackIndex: 0 _remoteStackTraceString: null _source: null _stackTrace: {sbyte[96]} _stackTraceString: null _watsonBuckets: {byte[5616]} _xcode: -532462766 xptrs: 0 Data: {System.Collections.ListDictionaryInternal} HelpLink: null HResult: -2146233079 InnerException: {System.Net.WebException: The remote server returned an error: NotFound. at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.ClientHttpWebRequest.<>c_DisplayClasse.b_d(Object sendState) at System.Net.Browser.AsyncHelper.<>c_DisplayClass1.b__0(Object sendState)} IPForWatsonBuckets: 0 Message: "The remote server returned an error: NotFound." RemoteStackTrace: null Source: "System" StackTrace: " at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()\r\n at System.Net.OpenReadCompletedEventArgs.get_Result()\r\n at xicihutong.DataServiceAgent.ServiceAgent.<>c_DisplayClassa.b_8(Object s, OpenReadCompletedEventArgs e)\r\n at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e)\r\n at System.Net.WebClient.OpenReadOperationCompleted(Object arg)" WatsonBuckets: {byte[5616]}

为什么?以及如何处理?
不幸的是,我发布的错误消息是一个 Unhandle Exception 并告诉我我们的服务器返回了一个错误,但我认为我已经在 Unhandle 异常中捕获了 404 错误,为什么它仍然抛出它?

最佳答案

要获得有关异常原因的更多详细信息,请检查 WebException 对象的 Status 属性。如果您的应用程序发送 https 请求,也可能是证书问题。

关于c# - 如何捕捉远程服务器返回错误: NotFound?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com