2015-04-17 125 views
1

我有一个自托管的WCF服务和客户端。
客户端没有服务引用,我已通过编程将其链接到端点。
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); 
    } 
} 

然而,在调试时,我收到的

常见的错误

有在任何绑定没有设置客户端和服务绑定可能不匹配客户端或服务的配置文件,以避免与编程设置发生冲突。

有什么我错过了,这是必要的,当这样做以编程方式?什么导致了这种错配?

回答

0

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

在客户端,您分别使用StreamedMtom

+0

您先生。我非常喜欢你。我将相同的自定义属性添加到主机中的绑定中,并且都顺利运行。非常感谢! – piggy