【问题标题】:Owin Self-Hosted WebApi Timeout SettingsOwin 自托管 WebApi 超时设置
【发布时间】:2015-11-13 14:59:14
【问题描述】:

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

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

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

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

这是由于某种空闲超时,因为我保持断点并且不对接收到的流进行处理吗?或者,当我的收集速度很慢且耗时过长时,我从流中读取时也会发生这种情况吗?

【问题讨论】:

    标签: c# timeout asp.net-web-api owin


    【解决方案1】:

    非常老的问题,但可以帮助碰到同一堵墙的人。 我在流媒体内容上遇到了同样的问题,并在 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 代码库,uint.MaxValue as MinSendBytesPerSecond 只会禁用该标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多