.NET 中忽略 HttpWebRequest ReadWriteTimeout;在单声道中工作

2023-12-06

将数据写入 Web 服务器时,我的测试显示 HttpWebRequest.ReadWriteTimeout 被忽略,这与MSDN规范。例如,如果我将 ReadWriteTimeout 设置为 1(= 1 毫秒),调用 myRequestStream.Write() 并传入需要 10 秒传输的缓冲区,则使用 .NET 3.5 SP1 会成功传输并且永远不会超时。在 Mono 2.6 上运行的相同测试按预期立即超时。可能出什么问题了?


似乎存在一个错误,即在由 BeginGetRequestStream() 返回给您的 Stream 实例上设置写入超时时,不会向下传播到本机套接字。我将提交一个错误,以确保在 .NET Framework 的未来版本中纠正此问题。

这是一个解决方法。

private static void SetRequestStreamWriteTimeout(Stream requestStream, int timeout)
{
  // Work around a framework bug where the request stream write timeout doesn't make it
  // to the socket. The "m_Chunked" field indicates we are performing chunked reads. Since
  // this stream is being used for writes, the value of this field is irrelevant except
  // that setting it to true causes the Eof property on the ConnectStream object to evaluate
  // to false. The code responsible for setting the socket option short-circuits when it
  // sees Eof is true, and does not set the flag. If Eof is false, the write timeout
  // propagates to the native socket correctly.

  if (!s_requestStreamWriteTimeoutWorkaroundFailed)
  {
    try
    {
      Type connectStreamType = requestStream.GetType();
      FieldInfo fieldInfo = connectStreamType.GetField("m_Chunked", BindingFlags.NonPublic | BindingFlags.Instance);
      fieldInfo.SetValue(requestStream, true);
    }
    catch (Exception)
    {
      s_requestStreamWriteTimeoutWorkaroundFailed = true;
    }
  }

  requestStream.WriteTimeout = timeout;
}

private static bool s_requestStreamWriteTimeoutWorkaroundFailed;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中忽略 HttpWebRequest ReadWriteTimeout;在单声道中工作 的相关文章

  • SQL Server、C#:事务回滚超时异常

    我有一个奇怪的问题 我有一个 NET 程序 我的处理逻辑需要在 SQL Server 2005 数据库上进行长时间运行的事务 约 20 分钟 没关系 因为没有人并行访问数据库 当出现问题时 事务应该回滚 很少发生并且没有任何可见的模式 th
  • c# http Post 在 webresponse 中没有得到任何内容

    这是我的请求和响应代码 System IO MemoryStream xmlStream null HttpWebRequest HttpReq HttpWebRequest WebRequest Create url xmlStream
  • java中的简单超时

    谁能指导我如何在java中使用简单的超时 基本上在我的项目中我正在执行一条语句br readLine 它正在读取调制解调器的响应 但有时调制解调器没有响应 为此 我想添加一个超时 我正在寻找类似的代码 try String s br rea
  • Mono 和 WebRequest 速度 - 测试

    在 mono 4 6 2 linux 中 我注意到 wget 下载文件的速度与webclient DownloadString 所以我做了一个小测试来调查 为什么 wget 明显比 C 快 根据我自己的实验 使用 wget 下载 手动读取文
  • 超时 jQuery 效果

    我试图让一个元素淡入 然后在 5000 毫秒内再次淡出 我知道我可以做类似的事情 setTimeout function notice fadeOut 5000 但这只会控制淡出 我会在回调中添加上述内容吗 Update 从 jQuery
  • 由于超时,应用程序无法在模拟器上启动

    从过去 1 小时开始 我无法启动我的应用程序Eclipse Helios和我的控制台Eclipse给出以下错误 2011 11 21 10 37 00 PagingScrollerExample Failed to install Pagi
  • IIS 8 HTTPS/需要 SSL 导致超时错误

    尝试通过 IIS 8 通过 SSL 发布网站 但出现超时错误 任何帮助表示赞赏 采取的步骤 已验证该网站可以通过 HTTP 访问 http xxx xxx xxx xxx有效 此时使用 IP 地址 如果重要的话 IIS gt 服务器证书 g
  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • 使用带有 HTTPS 证书的 System.Net.WebClient

    在我的 C Windows 客户端中 我向 母舰 进行了 POST 提交 当然 我希望提交的数据受到保护 因此我付费让 HostGator 向我颁发 SSL 证书 我保存了 CER 文件 并且正在构建请求 如下所示 wrapper for
  • windows服务启动超时

    有没有办法为每个服务设置不同的服务启动超时值 我可以使用 ServicesPipeTimeout 注册表项更改它 但它是每台计算机的 http support microsoft com kb 824344 http support mic
  • PHP - 将数据从一个站点安全地传递到另一个站点

    我有一个可以接受来自多个站点的请求的站点 有点像升级检查 这些网站将发送用户名 密码 应用程序版本等信息 然后我的网站将根据这些信息发送响应 基本上这是一个 GET请求 例如 http www mysite com user boo pas
  • .NET 的 HttpWebResponse 是否会自动解压缩 GZiped 和 Deflated 响应?

    我正在尝试执行一个接受压缩响应的请求 var request HttpWebRequest HttpWebRequest Create requestUri request Headers Add HttpRequestHeader Acc
  • Rx Framework:在超时时执行操作,而不中断原始可观察序列

    给定一个可观察的源 通过轮询低级设备的 变化 状态生成 observable source metacode IObservable
  • 超时时杀死或终止子进程?

    我想尽可能快地重复执行子进程 然而 有时这个过程会花费太长的时间 所以我想杀死它 我使用 signal signal 如下所示 ppid pipeexe pid signal signal signal SIGALRM stop handl
  • ASP.NET MVC 中的表单超时问题

    如何在 ASP NET MVC 中关闭表单身份验证 我有注册 登录和忘记密码页面 旨在进入 Web 应用程序 最初我 我目前将我的 asp net mvc Web 应用程序托管为单个代码库和多个数据库格式 我遇到表单在一段时间内过期 并且
  • 如何从 401 服务器错误获取标头

    我正在编写一个端口扫描器来检测本地网络上运行的 Web 服务 其中一些 Web 服务需要基本身份验证 我不知道这些服务的用户名 密码 我只想列出它们 因此现阶段无法提供凭据 我正在使用代码 var request HttpWebReques
  • HttpWebRequest 和 HttpWebResponse :维护连续查询的登录请求状态

    我有一些 HttpWebRequest 和 HttpWebResponse 链接在一起 也使用 CookieContainer 该代码模拟用户浏览三个不同的 我同意 页面 这些页面设置了 cookie 信息 在第四个页面上使用用户名和密码登
  • nodeJS 防止 res.download 超时

    我对我的 nodeJS 服务器进行了 POST 调用 该服务器在 mongo 数据库上搜索一些数据并返回包含所请求数据的 CSV 文件 问题是数据搜索和处理超过了nodeJS默认的2分钟超时 在不同的场景中 y 使用 res writeHe
  • 如何在不超时的情况下解析大型 CSV 文件?

    我正在尝试解析 50 MB 的 csv 文件 文件本身很好 但我正在尝试解决所涉及的大量超时问题 每个设置上传明智 我可以轻松上传并重新打开文件 但浏览器超时后 我收到 500 内部错误 我的猜测是我可以将文件保存到服务器上 打开它并保留我
  • 使用 VB/ASP classic 可以向 API 发出 HTTP 请求吗?

    是否可以使用 ASP classic 向 Web API 发出请求 例如 像 Flickr API 这样简单的东西 或者这种东西很久以前就不支持了 这是很有可能的 Dim req Set req Server CreateObject MS

随机推荐

  • 世界开发者说|re:Invent 2023 现场对话 Apache 软件基金会主席 David Nalley

    社区繁荣背后 Apache 因何区别于其他开源基金会 开源需要成为公司战略的一部分 做开源的目的和成功的度量标准都很重要 开源人工智能将是未来的趋势 但目前我们必须先明确开源人工智能的真正含义 Apache Answer 社区代表 re I
  • python:randint, choice 随机数据生成

    randint choice py coding utf 8 在算法竞赛中 用 python 编写随机数据生成器是太合适了 下面代码生成一个长度在5 10 恰好包含一个大写字母 其它字符为小写字母的字符串 from random impor
  • 若依微服务版本代码生成对sqlserver的支持

    目录 前言 一 后端 1 pom依赖 2 yml配置配置数据源 3 新增service impl 注意 4 新增mapper接口
  • 数组实现循环队列(增设队列大小size)

    目录 一 前言 1 如何实现循环 2 如何判断队列为空 3 如何判断队列为满 二 循环队列的结构定义 三 循环队列的创建及其初始化 四 入队 五 出队 六 取队头元素 七 取队尾元素 八 循环队列判空 九 循环队列判满 十 循环队列销毁 一
  • 戴尔工作站测试VMware虚拟机使用 RTX4090显卡

    1 随着人工智能和AI的发展 显卡运算获得越来越广发的运用 nvidia必然是首选 如何将nvidia显卡应用于虚拟机成为一个新的需求 好处是不同虚拟机可以轮流使用显卡进行计算 缺点是不能同时使用 本次需求为硬件为戴尔工作站 里面装两块 R
  • 从小米14安装不上应用说起【适配64位】

    一 原因 某天早上 同事突然对我说我换了小米14pro手机但是安装不了公司的打卡软件 怎么办呀 一时间 我也不知道原因 看到给我发的安装不上的截图陷入了沉思 随即打开在git仓库里找到这个项目 到本地编译打开 开始思考解决办法 作者 风罗伊
  • 网络安全(一)--网络环境构成,系统的安全

    2 网络攻防环境 目标 了解攻防环境构成 了解入侵检测系统 平台 的部署位置 2 1 环境构成 2 1 1 环境框图 一个基本的网络攻防实验环境包括 靶机 攻击机 入侵检测分析系统 网络连接四部分组成 一个基础的网络攻防实验环境需要如下组成
  • PyQt6 QComboBox下拉组合框控件

    锋哥原创的PyQt6视频教程 2024版 PyQt6 Python桌面开发 视频教程 无废话版 玩命更新中 哔哩哔哩 bilibili 2024版 PyQt6 Python桌面开发 视频教程 无废话版 玩命更新中 共计34条视频 包括 20
  • 计算机毕设ssm二手教材交易平台的设计与实现6k3cy9 独有(附源码)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 JSP mybatis Ma
  • 大数据的技术栈-逐步完善

    目录 1 hadoop a HDFS分布式文件系统 b Yarn集群资源管理器 c MapReduce sql引擎 d Impala sql引擎 e 工具概观 2 数据仓库知识 a Hive数据库 1 Hive Sql 2 数据库结构 b
  • 计算机毕设ssm工厂产品销存管理系统741e99 独有(附源码)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 JSP mybatis Ma
  • linux ls 统计文件数量和文件夹数量

    首先要明白 A 显示所有文件和文件夹 含隐藏 是 ls al 都是小写的a参数 root hxm aaa ls al B 显示所有文件和文件夹 不含隐藏 是 ls l root hxm aaa ls l C 显示所有 文件夹 不注意 只显示
  • rt-thread studio中新建5.02版本报错

    先吐槽一下 rt thread studio出现BUG真多 好多时间都是在找BUG 但里面用好多控件还是挺好用的 真是又爱又恨 所以一般使用功能不多的话还是用keil多一点 创建5 02版本工程之后直接进行编译 直接会报下面这个错误 资源
  • Spring Boot新特性 JdbcClient

    SpringBoot 3 2 引入了JdbcClient API组件可以对数据库操作 实际上JdbcClient是在JdbcTemplate基础上进行了封装 SpringBoot 3 2引入了新的 JdbcClient 用户数据库操作 Jd
  • WPS项目编号(序号)无法继续前一列表

    问题 在编写文档中 序号无法继续前一列表 序号之间无法自动连接 解决方法 使用格式刷 格式刷是复制格式的操作 可以用于选中已有格式的单元格 复制到需要设置格式的单元格 参考文章 在wps中 编号不能继续上一个编号时 采取的一种方法 CSDN
  • 计算机毕设ssm高校餐厅评价小程序y5b7i9 独有(附源码)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 JSP mybatis Ma
  • 计算机毕设ssm歌曲发烧友网站4956v9 独有(附源码)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 JSP mybatis Ma
  • Fiddler移动端抓包

    本篇文章 博主想使用通俗易懂的话语 让大家明白以下内容 什么是抓包 哪些场景需要用到抓包 Fiddler抓包的原理 怎样使用Fiddler进行移动端抓包 抓包 包 Packet 是TCP IP协议通信传输中的数据单位 一般也称 数据包 我们
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • .NET 中忽略 HttpWebRequest ReadWriteTimeout;在单声道中工作

    将数据写入 Web 服务器时 我的测试显示 HttpWebRequest ReadWriteTimeout 被忽略 这与MSDN规范 例如 如果我将 ReadWriteTimeout 设置为 1 1 毫秒 调用 myRequestStrea