首页 文章

Owin自托管WebApi超时设置

提问于
浏览
4

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

在调试期间,在断点停止一段时间后,我在尝试从接收的流中读取时在客户端获得了异常:

Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

调试时我可以重现这个问题 . 在返回到服务器的Get-Request之后,在断点处等待大约30秒后发生 .

这是由于某种空闲超时,因为我在断点处保持不工作在收到的流上?或者当我从流中读取时我的收集速度很慢且需要太长时间也会发生这种情况?

1 回答

  • 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 codebase, uint.MaxValue as MinSendBytesPerSecond 将只禁用该标志 .

相关问题