【发布时间】:2010-12-22 00:50:07
【问题描述】:
我在服务器和客户端(均用 C# 编写)之间使用 WCF 进行通信。
在发布模式下,超时应设置为 ~20 秒,但在调试模式下,我想将它们设置为更高的值,以便我可以在不发生超时的情况下调试/单步执行代码。
我知道我可以通过修改 app.config 文件来更改超时。但是,我有两个不同的绑定和 4 个超时值,所以我必须在几个地方进行更改,而且很容易忘记。
为了解决这个问题,我想在我的代码中有一个小的#if DEBUG 部分,它以编程方式将超时值更改为 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);
但是 *Timeout 属性是只读的,所以我得到一个编译错误。
我不喜欢以编程方式从头开始创建绑定的想法。如果我更改 app.config 中的某些属性,我必须记住在代码中进行相同的更改,以确保调试行为类似于发布行为(超时除外..)
如何处理?
【问题讨论】:
标签: wcf configuration timeout