c# - HttpListener 设置总连接超时

标签 c# httplistener

我正在尝试控制 HttpListener 中单个连接的最大总持续时间。我知道 TimeoutManager 属性和它包含的 5 个左右不同的超时值,但不清楚设置这些值中的每一个是否会加起来导致延迟可能发生的总位置联系。

我正在寻找更多类似的东西:“如果我们有一个连接从打开连接到现在持续时间超过 x 秒,则中止它而不发送任何其他内容或等待任何其他内容。”

编辑

澄清一下,我正在试验的场景涉及服务器尝试发送响应而客户端没有收到。这会导致 HttpListenerResponse.OutputStream.Write() 无限期挂起。我试图找到一种可以从另一个线程调用的方法来硬中止连接。我尝试使用 OutputStream.Close() 并得到了 Cannot Close Stream until all bytes are written。我还尝试了 HttpListenerResponse.Abort(),但没有产生明显的效果。

最佳答案

这些属性都不会满足您的要求。 HttpListener 旨在控制请求流、传入和传出数据,因此它不会处理从完全收到响应到您发送响应之间的时间,您有责任处理它。

如果总时间比期望的时间长,你应该创建自己的机制来中止请求,只需要一个计时器就足够了,当创建一个新连接时,如果请求在定时器到期前结束取消定时器,否则定时器中止请求。

关于c# - HttpListener 设置总连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280959/

相关文章:

c# - Entity Framework 和模拟

c# - 对于小数来说,值太大或太小

c# - 使用 OpenXML 和 Regex 在 Word Docx 中查找和替换撇号 ( ' ) 时出现问题

c# - 带有发布数据的 httplistener

c# - 如何在 Mono HTTPListener 服务器中捕获 SSL 异常?

c# - 停止并重新启动 HttpListener?

python - 添加对位于共享驱动器上的 .dll 的引用

c# - 我可以在 WinForms 应用程序中使用 Caliburn Framework 吗?

c# - HttpListener 服务器 header c#

c# - 为什么在监听强通配符(http ://+:port) http. sys/urlacl 绑定(bind)时 HttpListener "conflict with an existing registration"?