WCF 自定义端点 - 影响绑定?
WCF Custom endpoints - Affecting Bindings?
我有一个自承载 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);
服务工厂Class
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);
}
}
然而在调试时,我收到
的常见错误
The client and service bindings may be mismatched
在客户端或服务的任何配置文件中都没有绑定设置,以避免与编程设置发生冲突。
有没有我遗漏的东西,这是在以编程方式执行此操作时所必需的?是什么导致了这种不匹配?
您正在使用默认 BasicHttpBinding
托管服务,这意味着 TransferMode Buffered
和 MessageEncoding Text
。
在您的客户端中,您分别使用 Streamed
和 Mtom
。
我有一个自承载 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);
服务工厂Class
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);
}
}
然而在调试时,我收到
的常见错误The client and service bindings may be mismatched
在客户端或服务的任何配置文件中都没有绑定设置,以避免与编程设置发生冲突。
有没有我遗漏的东西,这是在以编程方式执行此操作时所必需的?是什么导致了这种不匹配?
您正在使用默认 BasicHttpBinding
托管服务,这意味着 TransferMode Buffered
和 MessageEncoding Text
。
在您的客户端中,您分别使用 Streamed
和 Mtom
。