pc1*_*ter 10 web-services network-programming httplistener
我已经构建了一个简单的Web服务,只使用HttpListener来接收和发送请求.有时,服务失败并显示"指定的网络名称不再可用".当我写入HttpListenerResponse的输出缓冲区时,它似乎被抛出.
这是错误:
ListenerCallback()错误:System.Net.HttpResponseStream.Write(Byte []缓冲区,Int32偏移量,Int32大小)中不再提供指定的网络名称
这是代码的罪恶部分.responseString是发送回客户端的数据:
buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
Run Code Online (Sandbox Code Playgroud)
它似乎并不总是一个巨大的缓冲区,两个例子是3,816字节和142,619字节,这些错误被抛出约30秒.我不认为我的单个客户端应用程序会重载HTTPlistener; 客户端偶尔会突发发送/接收数据,一次又一次地进行多次交换.
大多数谷歌搜索显示这是一个常见的IT问题,当出现网络问题时,会显示此错误 - 大多数帮助都是针对系统管理员诊断应用程序问题,而不是开发人员追踪错误.我的应用已经在不同的机器,网络等上进行了测试,我不认为这只是一个网络配置问题.
可能是这个问题的原因是什么?
当ContentLength64指定 a 并且KeepAliveis时,我也得到了这个false。似乎客户Content-Length端正在检查标头(所有可能的帐户都正确设置了标头,因为我得到了任何其他值的异常)然后说“Whelp I'm done KTHXBYE”并稍微关闭连接在底层HttpListenerResponse流期望它之前。现在,我只是捕捉异常并继续前进。
到目前为止,我在使用 HttpListener 时只遇到过一次这个特殊的异常。当我的应用程序在断点上停留了一段时间后恢复执行时,就会发生这种情况。
也许涉及某种内部超时?您的应用程序会突发发送数据,这意味着它可能在很多时候完全不活动。异常是否在一段时间不活动后立即发生?
| 归档时间: |
|
| 查看次数: |
8664 次 |
| 最近记录: |