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

本文关键字:动态 有一个 WCF config 是否 app | 更新日期: 2023-09-27 18:36:20

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

我的问题是,如果我提供一个在我的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();

我可以以某种方式调整我的代码,使其独立于任何"资源"文件吗?

谢谢

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

它期望终结点(其名称位于未在代码示例中共享的变量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();