【问题标题】:Setting timeout for WCF Dataservice为 WCF 数据服务设置超时
【发布时间】:2013-08-23 12:30:41
【问题描述】:

我正在为 OData 服务的一些超时而苦苦挣扎。我的第一个想法是更改超时属性,但我找不到执行此操作的正确位置。应该在哪里设置请求超时以及如何设置?有没有最佳实践?

【问题讨论】:

    标签: asp.net wcf wcf-data-services odata asp.net-web-api


    【解决方案1】:

    如果您使用的是 ODataClient (DataServiceContext),它有一个可以设置的 Timeout 属性。如果您使用自己的客户端,那么这取决于您使用什么技术来发送请求 - HttpWebClient、HttpListener、HttpClient 等。它们都有设置适当 Timeout 的属性。

    希望这会有所帮助。 谢谢 普拉提克

    【讨论】:

      【解决方案2】:

      不确定 OData 服务,但通常在绑定本身上设置发送和接收超时属性。我将 BasicHTTPBinding 用于我的 Web 服务,并且在主机上以这种方式设置绑定(在代码中):

      BasicHttpBinding b = default(BasicHttpBinding);
      b = new BasicHttpBinding(BasicHttpSecurityMode.None);
      dynamic specialTimeSpan = new TimeSpan(0, 30, 0);
      b.CloseTimeout = specialTimeSpan;
      b.ReceiveTimeout = specialTimeSpan;
      b.SendTimeout = specialTimeSpan;
      b.OpenTimeout = specialTimeSpan;
      

      这样会将关闭、打开、接收和发送超时设置为 30 分钟。

      在配置文件部署中,它会是这样的:

      <basicHttpBinding>
        <binding 
         closeTimeout="00:30:00" 
         openTimeout="00:30:00" 
         receiveTimeout="00:30:00"
         sendTimeout="00:30:00"
      

      【讨论】:

        猜你喜欢
        • 2013-05-18
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 2012-03-23
        • 2010-09-18
        • 2013-01-15
        相关资源
        最近更新 更多