eid*_*lon 8 httpwebrequest httpwebresponse system.net.webexception
我有一个用VB.NET编写的应用程序(不是 asp.net,它是一个Windows控制台应用程序).我正在尝试调用url(一个html页面)并将响应返回到一个字符串中.响应是直接的JSON,没有任何html标签.它打开{和关闭}.
我很好地创建了HttpWebRequest对象.然后打电话req.GetResponse().一旦我这样做,我得到错误,The underlying connection was closed: The connection was closed unexpectedly.我一直在谷歌搜索和检查stackoverflow,并尝试了我发现适用的一切(很多与WCF服务配置有关,不适用).
这是我的代码:
Public Function GetJSON(ByRef d As db.Device) As Boolean
Try
d.Url = "http://" & d.IpAddress & ini.doc.<svc>.<url>.Value
Dim req As HttpWebRequest = HttpWebRequest.Create(d.Url)
// req.Accept = "*/*"
// req.Timeout = 30000
// req.ReadWriteTimeout = 30000
// req.KeepAlive = False
// req.UseDefaultCredentials = True
// req.CachePolicy = HttpWebRequest.DefaultCachePolicy
// req.Proxy = HttpWebRequest.DefaultWebProxy
// req.ProtocolVersion = New System.Version(1, 0)
Dim rsp As HttpWebResponse = req.GetResponse()
Return True
Catch ex As Exception
Log(ex.Message)
Return False
Finally
rsp = Nothing
req = Nothing
End Try
End Function
Run Code Online (Sandbox Code Playgroud)
注释掉的行(错误的评论样式,但所以SO会解析它)是我迄今为止根据我在网上找到的所有事情.他们都没有解决它.我已经验证正在构建的URL是正确的; 如果我在浏览器中调用完全相同的URL,它会准确地返回正确的预期响应.
我已经尝试过wireharking它...我看到实际的预期,完整的数据返回到鲨鱼输出,然后是几行,然后是一条红线,上面写着:
http > 51943 [RST] Seq=1607 Win=0 Len=0这是.NET之前显示的最后一行抛出错误.
我也试着打开System.Net此跟踪每一个岗位/记录的SO,并从我看到类似的所有预期的JSON数据输出文件不回来,但是回来后抛出的.NET跟踪日志这些行:
System.Net.Sockets Verbose: 0 : [7040] Exiting Socket#60467532::Receive() -> 1605#1605
System.Net.Sockets Verbose: 0 : [7040] Socket#60467532::Receive()
System.Net.Sockets Verbose: 0 : [7040] Data from Socket#60467532::Receive
System.Net.Sockets Verbose: 0 : [7040] 00000000 : :
System.Net.Sockets Verbose: 0 : [7040] Exiting Socket#60467532::Receive() -> 0#0
System.Net.Sockets Verbose: 0 : [7040] Socket#60467532::Dispose()
System.Net Error: 0 : [7040] Exception in the HttpWebRequest#27806816:: - The underlying connection was closed: The connection was closed unexpectedly.
System.Net Error: 0 : [7040] Exception in the HttpWebRequest#27806816::GetResponse - The underlying connection was closed: The connection was closed unexpectedly.
Run Code Online (Sandbox Code Playgroud)
任何想法去哪里尝试解决这个问题?我们正在从一些环境监测传感器设备中读取这些数据,他们给了我们这个网址.
真正让我困惑的两件事就是
a)它在浏览器中调用时工作得很好
b)WireShark和.NET跟踪显示所有数据实际上都是IS回来了,框架是出于某种原因除了AFTER收到所有数据!
WebException本身很少使用,因为它的InnerException为null,其Status只显示"ConnectionClosed {8}"
提前致谢!!!
更新08/18 1130:我现在也尝试使用System.Net.WebRequest而不是HttpWebRequest.这也没有任何区别.
更新12月18日1822:我只是尝试切换我的代码,而不是使用[Http]Web[Request|Response]调暗WebClient对象而使用其DownloadString()方法.然而,这也会引发同样的错误.
更新08/18 1230:尝试使用My.Computer.Network.DownloadFile()- 也获得相同的连接关闭错误.
您可以在pastebin.com上发布跟踪日志的全部内容并在此处发布链接吗?
你可能会得到这个异常,因为服务器可能在"内容长度",它是实体发送N个字节的头说,但比N个字节是实际发送少,关闭连接.
回答:
谢谢你的数据.从tracelog和wireshark跟踪,似乎服务器没有发送任何响应头,并直接发送数据.这是HTTP协议违规.这就是客户抛出异常的原因.
| 归档时间: |
|
| 查看次数: |
15243 次 |
| 最近记录: |