web-services - HttpListener 中的 "Specified network name is no longer available"

标签 web-services network-programming httplistener

我构建了一个简单的 Web 服务,它仅使用 HttpListener 来接收和发送请求。有时,服务会失败并显示“指定的网络名称不再可用”。当我写入 HttpListenerResponse 的输出缓冲区时,它似乎被抛出。

这是错误:

ListenerCallback() Error: The specified network name is no longer available at System.Net.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 size)

这是代码的有罪部分。 responseString 是发送回客户端的数据:

buffer = System.Text.Encoding.UTF8.GetBytes(responseString);

response.ContentLength64 = buffer.Length;
output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);

它似乎并不总是一个巨大的缓冲区,两个例子分别是 3,816 字节和 142,619 字节,这些错误大约相隔 30 秒抛出。我不认为我的单个客户端应用程序会重载 HTTPlistener;客户端偶尔会突发发送/接收数据,多次交换接连发生。

大多数 Google 搜索显示,这是一个常见的 IT 问题,当出现网络问题时,就会显示此错误 - 大多数帮助都是针对系统管理员诊断应用程序问题,而不是开发人员追踪错误。我的应用程序已经在不同的机器、网络等上进行了测试,我认为这不仅仅是网络配置问题。

导致此问题的原因可能是什么?

最佳答案

当指定 ContentLength64KeepAlivefalse 时,我也会遇到此问题。看起来好像客户端正在检查 Content-Length header (根据所有可能的帐户,该 header 设置正确,因为我收到任何其他值的异常),然后说“Whelp I'm完成 KTHXBYE”,并在底层 HttpListenerResponse 流预期之前关闭连接。目前,我只是捕获异常并继续前进。

关于web-services - HttpListener 中的 "Specified network name is no longer available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429439/

相关文章:

c# - 如何将我的公共(public) IP 与 HttpListener 一起使用

c# - 为什么谷歌捕获的 IP 地址与我的 TcpListener 不同?

java - Spring REST Web 服务每天的第一个请求很慢

c# - 无法导入 WebService/Schema

c# - 如何捕获本地主机上生成的 SOAP 请求?

windows - 如何在 Windows 中获取或更改已断开连接的 NIC 的 IP 地址?

linux - 使用 libpcap 加入/离开多播组

web-services - 分布式服务如何比分布式对象更好?

java - 线程突然停止,没有异常或错误消息

c# - 防异常 HttpListener 可能吗?