在何处或如何配置服务超时



我有一个WCF服务和一个应用。

我的应用程序像这样调用wcf服务:
string endpointAddress = "https:\mywebsite.commyserviceservice.svc;
WSHttpBinding binding = new WSHttpBinding();
binding.MaxReceivedMessageSize = 524288000;
binding.CloseTimeout = new TimeSpan(0, 0, 20);
EndpointAddress endPointAddress = new EndpointAddress(address);
ChannelFactory<T> client = new ChannelFactory<T>(binding, endPointAddress);
IClientChannel proxy = (IClientChannel)client.CreateChannel();

和网络。我的服务的配置文件如下:

    <wsHttpBinding>
        <binding name="Secure" maxReceivedMessageSize="10485760" openTimeout="00:10:00" sendTimeout="00:30:00" closeTimeout="00:10:00">
          <readerQuotas maxDepth="10485760" maxStringContentLength="10485760" maxArrayLength="10485760" maxBytesPerRead="10485760" maxNameTableCharCount="10485760" />
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
    </wsHttpBinding>

但是我的服务呼叫在30秒后超时。为什么我的服务呼叫不使用Web ?配置超时?有web的原因是什么?如果始终使用客户端设置,则配置设置?我需要设置哪个Timeout属性来阻止我的服务调用在30秒后超时?

使用此链接我发现:

客户端:

SendTimeout用于初始化OperationTimeout,它管理发送消息的整个交互(包括在请求-应答情况下接收应答消息)。此超时也适用于从CallbackContract方法发送回复消息时。

OpenTimeout和CloseTimeout用于打开和关闭通道(当没有显式传递超时值时)。

ReceiveTimeout未被使用。

服务器端:

发送,打开和关闭超时与客户端相同(对于回调)。

ReceiveTimeout被ServiceFramework层用来初始化会话空闲超时。

在这个例子中,我将SendTimeout属性设置为2分钟。虽然这并不能解释我30秒的暂停。我有一种感觉,这可能与数据库连接超时有关

相关内容

  • 没有找到相关文章

最新更新