Owin自托管WebApi超时设置

本文关键字:超时 设置 WebApi Owin | 更新日期: 2023-09-27 18:21:58

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

在调试过程中,在断点处停了一段时间后,我在客户端尝试读取接收到的流时遇到了一个异常:

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

调试时,我可以重现此问题。它发生在断点等待大约30秒之后,即返回到服务器的Get Request之后。

这是由于某种空闲超时,因为我保留了一个断点,不处理接收到的流吗?或者,当我在流中阅读时,我的收藏速度很慢,耗时太长,也会发生这种情况吗?

Owin自托管WebApi超时设置

这是一个很老的问题,但可能对遇到同样困难的人有所帮助。我对流媒体内容也有同样的问题,并在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只会禁用该标志。