Mar*_*tin 10 configuration wcf timeout
我在服务器和客户端之间的通信中使用WCF(都是用C#编写的).
在释放模式下,时间应设置为~20秒,但在调试模式下,我想将它们设置为更高的值,以便我可以调试/插入代码而不会发生超时.
我知道我可以通过修改app.config文件来更改超时.但是,我有两个不同的绑定和4个超时值,所以我不得不在几个地方改变,它很容易忘记.
为了解决这个问题,我想在我的代码中有一个小的#if DEBUG-section,它以编程方式将超时值更改为1小时.
我尝试使用以下代码执行此操作:
Configuration configuration =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModel =
ServiceModelSectionGroup.GetSectionGroup(configuration);
BindingsSection bindings = serviceModel.Bindings;
foreach (var configuredBinding in bindings.WSHttpBinding.ConfiguredBindings)
{
configuredBinding.CloseTimeout = new TimeSpan(0, 30, 0);
configuredBinding.OpenTimeout = new TimeSpan(0, 30, 0);
Run Code Online (Sandbox Code Playgroud)
但*Timeout属性是readonly所以我得到编译错误.
我不喜欢以编程方式从头开始创建绑定的想法.如果我更改了app.config中的一些属性,我必须记住在代码中进行相同的更改,以确保调试行为类似于发布行为(超时除外).
怎么办呢?
mar*_*c_s 13
您可以执行以下操作:
就像是:
BasicHttpBinding myBinding = new BasicHttpBinding("ConfigName");
myBinding.CloseTimeout = .......
myBinding.OpenTimeout = .......
myBinding.ReceiveTimeout = .......
myBinding.SendTimeout = .......
EndpointAddress myEndpoint = new EndpointAddress("http://server:8181/yourservice");
YourServiceClient proxy = new YourServiceClient(myBinding, myEndpoint);
Run Code Online (Sandbox Code Playgroud)
这样,您可以在描述绑定超时时利用基本配置,但您可以调整所需的设置并从中创建客户端代理.
归档时间: |
|
查看次数: |
11221 次 |
最近记录: |