我有一个基于WCF的客户端 - 服务器应用程序,我正在使用ServiceDiscovery从客户端查找服务器。在安全关闭的开发过程中,发现工作正常,但是当我们根据证书打开邮件安全性时,ServiceDiscovery就停止了工作。
当我搜索解决方案时,我发现了这篇MSDN文章http://msdn.microsoft.com/en-us/library/dd456791%28v=vs.110%29.aspx所在的地方;
使用消息级别安全性时,必须在服务发现端点上指定EndpointIdentity,并在客户端发现端点上指定匹配的EndpointIdentity。有关消息级别安全性的更多信息,请参阅WCF中的消息安全性。
我一直在搜索,阅读和编写代码,但我似乎无法将其转化为正常工作的代码。有什么想法吗?
原始服务器代码的摘要:
private Binding CreateBinding()
{
WSDualHttpBinding binding = new WSDualHttpBinding(WSDualHttpSecurityMode.Message);
// Set other binding properties
return binding;
}
private static void EnableServiceDiscovery(ServiceHostBase host)
{
host.AddServiceEndpoint(new UdpDiscoveryEndpoint());
host.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
}
原始客户端代码的紧凑摘录:
public IEnumerable<MyServiceEndpoint> FindServicesOnNetwork()
{
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
var myServiceEndpoints = discoveryClient.Find(new FindCriteria(typeof (IMyService))).Endpoints;
discoveryClient.Close();
return myServiceEndpoints.Select(endpoint => new MyServiceEndpoint(endpoint.Address.Uri.ToString())).ToList();
}