我在WCF项目上工作。
这是合同:
[ServiceContract]
interface IContract
{
[OperationContract]
string MethodTest(string s);
[OperationContract]
List<hydrants_log_maxtime> GetData(DateTime dateTime);
}
以下是我访问主机服务端点的方法:
IContract proxy = ChannelFactory<IContract>.CreateChannel(new BasicHttpBinding(),
new EndpointAddress("http://localhost/HydrantEvents/Hydrant.svc"));
using (proxy as IDisposable)
{
var rows = proxy.GetData(new DateTime(2000, 5, 1));
var result = proxy.MethodTest("sss");
}
我将客户端上的结束点定义移动到app.config文件:
<system.serviceModel>
<client>
<endpoint address="http://localhost/HydrantEvents/Hydrant.svc"
binding="wsHttpBinding"
contract="HydrantsEventsConsumer.IContract"/>
</client>
</system.serviceModel>
但是当我将端点的定义移动到配置文件时,我不知道如何打开代理通道与服务主机通信,因为我没有在.config文件中定义的代理实例。
如何在配置文件中定义端点时打开代理通道?
答案 0 :(得分:0)
您可以为配置文件的name
部分中的<endpoint>
属性分配值,然后使用带有名称值的ChannelFactory<T>
重载来创建代理。
<system.serviceModel>
<client>
<endpoint address="http://localhost/HydrantEvents/Hydrant.svc"
binding="wsHttpBinding"
contract="HydrantsEventsConsumer.IContract"
name="MyEndpoint" />
</client>
</system.serviceModel>
IContract proxy = ChannelFactory<IContract>("MyEndpoint").CreateChannel();