Owin自托管WebApi超时设置
本文关键字:超时 设置 WebApi Owin | 更新日期: 2023-09-27 18:21:58
我有一个Owin自托管的web api服务器,我想知道当有大量文件下载时是否需要更改超时设置?我使用的客户端使用HttpCompletionOption.ResponseHeadersRead.读取响应
在调试过程中,在断点处停了一段时间后,我在客户端尝试读取接收到的流时遇到了一个异常:
无法从传输连接读取数据:远程主机强制关闭了现有连接
调试时,我可以重现此问题。它发生在断点等待大约30秒之后,即返回到服务器的Get Request之后。
这是由于某种空闲超时,因为我保留了一个断点,不处理接收到的流吗?或者,当我在流中阅读时,我的收藏速度很慢,耗时太长,也会发生这种情况吗?
这是一个很老的问题,但可能对遇到同样困难的人有所帮助。我对流媒体内容也有同样的问题,并在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
属性,允许您更改大多数超时/限制。我找到的获取Web应用程序HttpListener
实例的唯一方法是访问其属性
var listener = (OwinHttpListener);
app.Properties["Microsoft.Owin.Host.HttpListener.OwinHttpListener" ]);
listener.Listener.TimeoutManager.MinSendBytesPerSecond = uint.MaxValue;
根据owin
代码库,uint.MaxValue
作为MinSendBytesPerSecond
只会禁用该标志。