C# Owin自托管WebApi超时设置

C# Owin自托管WebApi超时设置,c#,timeout,asp.net-web-api,owin,C#,Timeout,Asp.net Web Api,Owin,我有一个Owin自托管web api服务器,我想知道当有大量文件下载时是否需要更改超时设置? 我使用的客户端读取带有HttpCompletionOption.ResponseHeadersRead的响应 在调试过程中,当我在断点中停止一段时间后,在尝试读取接收到的流时,客户端出现异常: 无法从传输连接读取数据:远程主机强制关闭了现有连接。 调试时,我可以重现此问题。它发生在对服务器的Get请求返回后,大约30秒的断点等待后 这是由于某种空闲超时造成的,因为我保留了一个断点,不处理接收到的流吗?或

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

在调试过程中,当我在断点中停止一段时间后,在尝试读取接收到的流时,客户端出现异常:

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

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


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

这是一个非常古老的问题,但可能会帮助那些遇到同样问题的人。 我对流媒体内容也有同样的问题,并在
HTTPERR
文件夹
(C:\Windows\System32\LogFiles\HTTPERR)

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

var listener = (OwinHttpListener);
app.Properties["Microsoft.Owin.Host.HttpListener.OwinHttpListener" ]);
listener.Listener.TimeoutManager.MinSendBytesPerSecond = uint.MaxValue;
根据
owin
codebase,
uint.MaxValue
as
MinSendBytesPerSecond
只会禁用该标志

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