使用 WebRequest.BeginGetResponse 的 WebException
Posted
技术标签:
【中文标题】使用 WebRequest.BeginGetResponse 的 WebException【英文标题】:WebExcpetion usind WebRequest.BeginGetResponse 【发布时间】:2013-03-05 11:31:17 【问题描述】:有个问题困扰了我很久。
我使用的是 Windows Phone 8 和 c#。
从网络下载文件时,我有时会收到此异常:
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.ni.dll
A first chance exception of type 'System.Net.WebException' occurred in System.Windows.ni.dll
A first chance exception of type 'System.Net.WebException' occurred in System.Windows.ni.dll
ExceptionMessage:The remote server returned an error: NotFound.
然后我再次运行程序,它工作正常。不知道为什么有时候找不到远程服务器,真的是服务器的问题吗? 它认为它在我的代码中,我使用这些函数:
WebRequest request = WebRequest.Create("http...);
IAsyncResult res = request.BeginGetResponse(new AsyncCallback(DownloadComplete), null);
如果您有任何建议,我将不胜感激,因为此异常不断弹出,我无法解决。
【问题讨论】:
【参考方案1】:它并没有说它找不到远程服务器,而是服务器拒绝了请求的文件,因为它在那个远程服务器上当时不存在。很难知道您的确切情况,但撇开网络问题不谈,它可能只是 当时该文件不存在这样简单的事情。
这个文件多久更新一次?想一想,在您请求文件时,该文件已被删除并会立即被重写。
网络本身并不可靠,只是看起来可靠;这方面有很多技术,但我的意思是,在你的情况下,在一段时间后失败后重试可能会更糟糕一些“恢复”逻辑。
只是一种可能。
【讨论】:
感谢您的回答。我已经安装了一些逻辑,如果第一次失败,它将重试下载。但是当这些异常不是我的错时,我该如何隐藏它们呢?有什么办法可以阻止它们显示在我的调试器窗口中?【参考方案2】:当我忘记手机在模拟器中运行并将网络引用更改为本地主机时,我会得到这个。然后本地主机将在电话本身上进行解释,显然网络服务没有在电话上运行。如果您在进行本地调试,请确保使用您机器的 IP 地址,而不是 localhost 或 127.0.0.1。
【讨论】:
以上是关于使用 WebRequest.BeginGetResponse 的 WebException的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)