c# - WPF HTTPWebRequest 底层连接已关闭 : An unexpected error occurred on a receive

标签 c# .net wpf httpwebrequest

首先,还有许多其他类似的问题,我已经阅读了所有这些问题,它们也有类似的问题,但它们与我的问题不同:

在 WPF 客户端应用程序中,我正在向各种网站发出多个 HttpWebRequests。在一台特定的机器和一个特定的网站上,我收到以下错误,但只是间歇性的,大约每 4 或 5 个请求一次:

System.Net.Web异常 基础连接已关闭:接收时发生意外错误。 在 System.Net.HttpWebRequest.GetResponse()

请求的状态为 ReceiveFailure。

这是我尝试过的:

  • 将超时设置得非常高,关闭保持事件并使用 http 1.0 而不是 1.1,所有这些都没有改变问题
  • 通过代理运行以查看发生了什么,但由于某些奇怪的原因,当我通过代理运行完全相同的代码时(通过在 http 网络请求上设置代理对象),此问题不会发生
  • 我可以使用 IE 和 chrome 毫无问题地访问网站
  • 尝试了我家庭网络中的另一台机器,没有任何问题。与网络外的另一台机器类似。

将 native 升级到Win7后出现此问题,但回到WinXP后问题仍然出现。

非常感谢任何帮助,所有其他帖子要么是针对人们与他们自己的网络服务交谈的,要么是 ASP 配置问题或类似问题。我提出请求的网站也是一个 ASP 网站,但我不认为它是第 3 方网站的问题,因为这个完全相同的代码适用于其他机器,而不是一台特定的机器。

最佳答案

ReceiveFailure 状态表示您的应用程序开始接收响应,但由于某种原因在收到完整消息之前它已关闭。

由于您已经更改超时等但没有成功,问题可能是服务器出于某种原因在完成响应之前关闭了响应流。隔离到特定机器可能表示该特定机器上可能存在硬件问题或配置问题。它仅适用于机器上的一个网站这一事实表明配置而非硬件。那台机器有什么不同吗?更新? IIS 配置?

它可能通过 IE、Chrome 和代理工作,因为它们已经内置了一些错误处理(IE 和 Chrome 肯定会有错误处理并重试请求,我假设代理也会)。您可能必须在您的代码中构建一些此类错误处理。

关于c# - WPF HTTPWebRequest 底层连接已关闭 : An unexpected error occurred on a receive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582603/

相关文章:

C# Unity > 静态实例成员不会导致构造函数被调用

c# - 使用 WinSCP .NET 程序集从 SFTP 服务器下载具有偏移量的文件 block

c# - 将字符串转换为 DataColumn 中的 guid

c# - 检查 Windows 路径中是否存在可执行文件

c# - 在 C# 中是否有除 Console.Write 之外的任何字符串输出命令

接受具有共同属性的多个对象的 C# 方法?

c# - 如何将图像的工具提示绑定(bind)到 XAML 中的异常错误消息?

c# - 动态格式化的 TextBlock

c# - DataGrid 虚拟化绑定(bind)到带有 GroupDescriptions 的 ListCollectionView

c# - 在 Visual Studio 中创建 Windows Installer 项目