2015-04-17 126 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