求教调用WCF超时问题的解决办法

求教调用WCF超时问题的解决办法,第1张

在 Silverlight 端设置 SendTimeout 和 ReceiveTimeout 属性,经常在 Debug 时需要调试上好几分钟、或者放上几十分钟。

可以在 ServiceReferences.ClientConfig 中配置,不过个人习惯使用后台代码,毕竟配置最灵活:

BasicHttpBinding 在 Debug/ Release 时的代码配置

C# code

defaultBasicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.None)

{

Name = "DefaultBasicHttpBinding",

OpenTimeout = new TimeSpan(0, 1, 0),

CloseTimeout = new TimeSpan(0, 1, 0),

#if DEBUG

SendTimeout = new TimeSpan(0, 18, 00),

ReceiveTimeout = new TimeSpan(18, 18, 00),

MaxBufferSize = int.MaxValue,

MaxReceivedMessageSize = int.MaxValue

#else

SendTimeout = new TimeSpan(0, 8, 00),

ReceiveTimeout = new TimeSpan(0, 18, 00),

MaxBufferSize = int.MaxValue,

MaxReceivedMessageSize = int.MaxValue

#endif

}

CustomBinding

C# code

 

customBinding = new CustomBinding()

{

Name = "CustomBinding",

OpenTimeout = new TimeSpan(0, 1, 0),

CloseTimeout = new TimeSpan(0, 1, 0),

#if DEBUG

SendTimeout = new TimeSpan(0, 18, 00),

ReceiveTimeout = new TimeSpan(18, 18, 00),

#else

SendTimeout = new TimeSpan(0, 8, 00),

ReceiveTimeout = new TimeSpan(0, 18, 00),

#endif

}

customBinding.Elements.Add(new System.ServiceModel.Channels.BinaryMessageEncodingBindingElement())

customBinding.Elements.Add(new HttpTransportBindingElement()

{

MaxBufferSize = int.MaxValue, MaxReceivedMessageSize= int.MaxValue

}

)

如果定位到服务的话,这样能定位到服务,设置binding的bindingConfiguration; 设置bindingConfiguration为BasicBinding给流的服务,,OtherBasicBinding给其他的服务,,这样能定位到服务。

你好,很高兴为你解答。在WinForm中使用Timer定时器来做,因为你WCF默认的时间是10分钟,所以你应该在<10分钟的时间内,使用该定时器然后重新调用你的WCF。希望能帮到你,求采纳。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11335552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存