我一直致力于开发某种中间人应用程序,该应用程序使用一系列日期(通常一次 7 个)的 HTTP post 请求将文本上传到 CMS 后端。我正在使用 HttpWebRequest 来完成此任务。第一次约会似乎工作正常,但是当第二次约会开始时,我得到 System.Net.WebException: 请求已中止:请求已取消。
我四处搜寻,发现了以下重要线索:
http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/0d0afe40-c62a-4089-9d8b-fb4d206434dc http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/0d0afe40-c62a-4089-9d8b-fb4d206434dc
http://www.jaxidian.org/update/2007/05/05/8 http://www.jaxidian.org/update/2007/05/05/8
http://arnosoftwaredev.blogspot.com/2006/09/net-20-httpwebrequestkeepalive-and.html http://arnosoftwaredev.blogspot.com/2006/09/net-20-httpwebrequestkeepalive-and.html
他们并没有提供太多帮助。我尝试过重载 GetWebReuqest 但这没有意义,因为我没有使用该函数。
这是我的代码:http://pastebin.org/115268 http://pastebin.org/115268
在它至少成功运行一次后,我在第 245 行收到错误。
我很感激能得到的任何帮助,因为这是我已经从事了一段时间的项目的最后一步。这是我的第一个 C#/VS 项目,因此我愿意接受任何提示,但我想首先解决这个问题。
THanks!
Internet 上列出的常见解决方案似乎是将 HttpWebRequest 的 KeepAlive 属性设置为 false。如果根本原因是连接预计会被重用,即使它实际上在一段时间后自动关闭,这也可以解决问题。但是,不断打开和关闭连接会对性能造成影响。
遇到此问题时,我使用的另一个可能的解决方案是扩展 Timeout 属性:WebRequest.ReadWriteTimeout、WebRequest.Timeout、RequestStream.WriteTimeout 和 RequestStream.ReadTimeout。请注意这些以毫秒为单位,因此您可能希望超时为 1000 * 60 * 10 来表示 10 分钟(或者如果您认为您知道这意味着什么,则只需 600000...)。您可以通过减小文件大小来测试这是否更可能是导致问题的原因。
顺便提一句。您的代码不再出现在列出的网站上。如果它仍然是一个问题,您可能需要将其包含在帖子的文本中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)