WCF数据服务 - 超时从mysql视图过期的问题

时间:2013-07-31 07:36:47

标签: c# mysql wcf entity-framework wcf-data-services

我用mysql DB创建了wcf datatservices。我快速从表中获取数据。但是当我尝试从视图中获取数据时,它会抛出超时异常。直接在db中尝试数据的速度非常快。

我尝试在web.config中设置以下内容。

 <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetHttpBinding" maxBufferPoolSize="2147483647"  closeTimeout="00:01:00"
                 openTimeout="00:01:00"  maxConnections="10"
                 receiveTimeout="00:10:00"
                 sendTimeout="00:10:00"
          maxBufferSize="524288" maxReceivedMessageSize="2147483647" />
      </netTcpBinding>
    </bindings>
    <services>
      <service name="MyService">
        <endpoint address="http://localhost:59825" binding="netTcpBinding"
          bindingConfiguration="NetHttpBinding" name="HttpBinding" />
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>

仍然超时异常。

EDIT1:

当我尝试使用表格时,数据正在增加。我从同一个表创建了一个视图select *。现在也是抛出超时异常。

请帮忙。

谢谢, 萨里萨。

4 个答案:

答案 0 :(得分:2)

<system.serviceModel>
  <bindings>
    <netTcpBinding>
    <binding name="longTimeoutBinding"
        receiveTimeout="00:10:00" sendTimeout="00:10:00">
      <security mode="None"/>
    </binding>
    </netTcpBinding>
   </bindings>

  <services>
    <service name ="longTimeoutService"
      behaviorConfiguration="longTimeoutBehavior">
      <endpoint address="net.tcp://localhost/longtimeout/"
        binding="netTcpBinding" bindingConfiguration="longTimeoutBinding">

      </endpoint>
    </service>
....

修改

如果您没有收到,请访问此链接: Explaination of different timeout types

答案 1 :(得分:1)

您可能在asp.net中设置配置,这是客户端。您还需要配置服务器(WCF)。

您必须在WCF配置中更改 receiveTimeout

您也可以使用WCF Message Logging进行诊断。

答案 2 :(得分:0)

我想这与WCF配置无关。您能否检查数据库中视图的权限,并确保他具有与表中相同的权限。

答案 3 :(得分:0)

由于该服务似乎适用于较小的数据集,因此可能是因为您正在使用视图,所以在数据库服务器上处理结果时它会空闲。在这种情况下,您需要设置inactivityTimeout

<netTcpBinding>
    <binding name="NetHttpBinding" 
             maxBufferPoolSize="2147483647"  
             closeTimeout="00:01:00"
             openTimeout="00:01:00"  
             maxConnections="10"
             receiveTimeout="00:10:00"
             sendTimeout="00:10:00"
             maxBufferSize="524288" 
             maxReceivedMessageSize="2147483647">
        <reliableSession ordered="true" 
                         inactivityTimeout="00:10:00"
                         enabled="true" />
    </binding>
</netTcpBinding>