对于动态 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();
我使用以下代码在 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();