WCF自定义端点 - 影响绑定?

时间:2015-04-17 09:10:33

标签: wcf wcf-binding

我有自托管的WCF服务和客户端。
客户端没有服务引用,我已通过编程方式将其链接到端点。

客户端和服务中的绑定设置为BasicHttpBinding -

服务

Uri baseAddress = new Uri("http://localhost:8733/Design_Time_Addresses/DSCentralService/Service1/");

DSCentralService.Service1 contentServer = new DSCentralService.Service1();

//initialise the servicehost
centralSvrHost = new ServiceHost(typeof(DSCentralService.Service1), baseAddress);

//add bindings
centralSvrHost.AddServiceEndpoint(
      typeof(DSCentralService.IService1), 
      new BasicHttpBinding(), 
      baseAddress
);

客户端

serviceFactory = new ServiceFactory<DSCentralService.IService1>();

String serviceAddress="http://localhost:8733/Design_Time_Addresses/DSCentralService/Service1/";

iContentServer = serviceFactory.GetService(serviceAddress);

服务工厂类

public class ServiceFactory<T> where T : class
{
    private T _service;

    public T GetService(string address)
    {
        return _service ?? (_service = GetServiceInstance(address));
    }

    private static T GetServiceInstance(string address)
    {               
        BasicHttpBinding basicBinding = new BasicHttpBinding();
        basicBinding.Name = "DSCentralSvr";
        basicBinding.TransferMode = TransferMode.Streamed;
        basicBinding.MessageEncoding = WSMessageEncoding.Mtom;
        basicBinding.MaxReceivedMessageSize = 10067108864;
        basicBinding.SendTimeout = new TimeSpan(0, 10, 0);
        basicBinding.OpenTimeout = new TimeSpan(0, 10, 0);
        basicBinding.CloseTimeout = new TimeSpan(0, 10, 0);
        basicBinding.ReceiveTimeout = new TimeSpan(0, 10, 0);

        EndpointAddress endpoint = new EndpointAddress(address);

        return ChannelFactory<T>.CreateChannel(basicBinding, endpoint);
    }
}

然而在调试时,我收到了

的常见错误
  

客户端和服务绑定可能不匹配

在客户端或服务的任何配置文件中都没有绑定设置,以避免与编程设置冲突。

我有什么遗漏,这在以编程方式执行此操作时是必要的吗?造成这种不匹配的原因是什么?

1 个答案:

答案 0 :(得分:0)

您使用默认BasicHttpBinding托管服务,这意味着TransferMode Buffered和MessageEncoding Text

在您的客户端中,您分别使用StreamedMtom