如何在配置文件中定义端点时打开代理通道?

时间:2016-05-28 20:03:46

标签: .net wcf

我在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文件中定义的代理实例。

如何在配置文件中定义端点时打开代理通道?

1 个答案:

答案 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();