对于动态 WCF,我是否必须在 app.config 中有一个条目

Do I have to have an entry in app.config for dynamic WCF

我使用以下代码在 C#(WinForm - 桌面)中动态创建我的 WCF 客户端:

我的问题是,如果我提供的 EndPoint 在我的 appconfig 文件中没有提到,它会抛出一个错误,告诉我找不到它。

我是否必须在我的 appconfig 中指定端点才能使用此代码:

BasicHttpBinding binding = new BasicHttpBinding(endPoint);
binding.SendTimeout = new TimeSpan(TimeSpan.TicksPerMillisecond * 5000);;
EndpointAddress address = new EndpointAddress(uri);
ChannelFactory<InformedMotion.Engine.wsMotion.ISync2Channel> factory = new ChannelFactory<InformedMotion.Engine.wsMotion.ISync2Channel>(binding, address);
wcf = factory.CreateChannel();

我能否以某种方式调整我的代码,使其独立于任何 'resource' 文件?

谢谢

它期望端点(其名称在您未在代码示例中共享的变量 endpoint 中)出现在您的配置文件中。

我个人认为将大部分 wcf 配置放入配置文件中是个好主意,因为在更改时您非常灵活。

但这不是必须的。您可以像以前那样以编程方式定义端点。只需将 endpoint 变量留在 BasicHttpBinding 构造函数之外,这不是必需的,并且会导致在配置文件中进行查找:

BasicHttpBinding binding = new BasicHttpBinding();
binding.SendTimeout = new TimeSpan(TimeSpan.TicksPerMillisecond * 5000);

EndpointAddress address = new EndpointAddress(uri);
var factory = new ChannelFactory<InformedMotion.Engine.wsMotion.ISync2Channel>(binding, address);

wcf = factory.CreateChannel();