我有一个Owin自托管的web-api服务器,我想知道在有大量文件下载时是否需要更改超时设置? 我使用的客户端使用HttpCompletionOption.ResponseHeadersRead读取响应。
在调试期间,在断点停止了一段时间后,我在客户端尝试从接收的流中读取时遇到异常:
无法从传输连接中读取数据:远程主机强行关闭现有连接。
调试时我可以重现这个问题。在返回到服务器的Get-Request之后,在断点处等待大约30秒后发生。
这是由于某种空闲超时,因为我保留了一个断点而不能处理收到的流吗?或者当我的收集速度很慢且需要太长时间从流中读取时,它是否也会发生?
答案 0 :(得分:2)
非常古老的问题,但可能会帮助谁碰到同一堵墙。
流媒体内容遇到了同样的问题,并在HTTPERR
文件夹(C:\Windows\System32\LogFiles\HTTPERR)
2016-08-12 09:17:52 ::1%0 60095 ::1%0 8000 HTTP/1.1 GET
/endpoint/audiostream/0/0/streamer.mp3 - - - Timer_MinBytesPerSecond -
2016-08-12 09:18:19 ::1%0 60118 ::1%0 8000 HTTP/1.1 GET
/endpoint/audiostream/0/0/streamer.mp3 - - - Request_Cancelled -
Owin
HttpListener
具有TimeOutManager
属性,可让您更改大多数超时/限制。我发现获取webapp HttpListener
实例的唯一方法是访问其属性
var listener = (OwinHttpListener);
app.Properties["Microsoft.Owin.Host.HttpListener.OwinHttpListener" ]);
listener.Listener.TimeoutManager.MinSendBytesPerSecond = uint.MaxValue;
根据owin
代码库,uint.MaxValue
MinSendBytesPerSecond
只会禁用该标记。