Owin自托管WebApi超时设置

Dan*_*elG 5 c# timeout asp.net-web-api owin

我有一个Owin自托管的Web-api服务器,我想知道当下载大量文件时是否需要更改超时设置?我正在使用的客户端使用HttpCompletionOption.ResponseHeadersRead读取响应。

在调试期间,在断点处停顿了一段时间后,尝试读取接收到的流时,客户端出现异常:

无法从传输连接中读取数据:远程主机强行关闭了现有连接。

在调试时,我可以重现此问题。在返回到服务器的Get-Request之后,在断点处等待了大约30秒之后,就会发生这种情况。

这是由于某种空闲超时导致的,因为我处于断点状态,无法在接收到的流上工作吗?还是我的收藏收集速度太慢且时间太长时,我正在从流中读取时也会发生这种情况吗?

小智 3

很老的问题,但可能会帮助遇到同样困难的人。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 -
Run Code Online (Sandbox Code Playgroud)

Owin HttpListener有一个TimeOutManager属性允许您更改大多数超时/限制。我发现获取 webappHttpListener实例的唯一方法是访问其属性

var listener = (OwinHttpListener);
app.Properties["Microsoft.Owin.Host.HttpListener.OwinHttpListener" ]);
listener.Listener.TimeoutManager.MinSendBytesPerSecond = uint.MaxValue;
Run Code Online (Sandbox Code Playgroud)

根据owin代码库,uint.MaxValueasMinSendBytesPerSecond只会禁用该标志。