谁能告诉我传输和消息级安全码之间的区别。另外,如何使用它们。使用消息安全模式时出现以下错误:
<message algorithmSuite="Default" clientCredentialType="UserName"/>
例外 :
System.ServiceModel.CommunicationObjectFaultedException:通信对象 System.ServiceModel.ChannelFactory`1 无法用于通信,因为它处于故障状态。
谁能告诉我传输和消息级安全码之间的区别。另外,如何使用它们。使用消息安全模式时出现以下错误:
<message algorithmSuite="Default" clientCredentialType="UserName"/>
例外 :
System.ServiceModel.CommunicationObjectFaultedException:通信对象 System.ServiceModel.ChannelFactory`1 无法用于通信,因为它处于故障状态。
消息安全对每条单独的消息进行加密以保护敏感数据。传输安全保护端到端网络连接以保护网络流量。
使用以下传输安全标准来决定是否使用它:
点对点。传输安全支持点对点通信,不支持中间场景或协议转换。
流媒体。传输安全可以支持流数据场景。
绑定限制。传输安全性不适用于 wsDualHttpBinding。
身份验证限制。传输安全性不适用于协商、用户名或 Kerberos 直接身份验证。
使用以下消息安全标准来决定是否使用它:
中介。消息安全支持具有中介或协议转换的场景。
加密灵活性。消息安全性允许您加密部分消息,而将其他部分保留为明文。
绑定限制。消息安全性不适用于 netNamedPipeBinding。安全对话。安全对话仅适用于消息安全。
身份验证限制。消息安全性不适用于基本身份验证或摘要身份验证。
您得到的错误可能不是问题的根源。要查看实际发生的情况,请尝试使用下面定义的服务代理:
public class ServiceProxy<T> : IDisposable where T : class, ICommunicationObject
{
public ServiceProxy(T client)
{
Client = client;
}
public T Client { get; private set; }
public void Dispose()
{
if (Client != null &&
Client.State != CommunicationState.Closed &&
Client.State != CommunicationState.Faulted)
{
Client.Close();
}
}
}
并以这种方式使用它:
using (var c = new ServiceProxy<[yourservicetypehere]>(new [yourservicetypehere]()))
{
try
{
var rep = c.Client.[yourservicemethodhere](......);
}
catch (Exception exception)
{
// Trap exception here to see what is really happening.
}
finally
{
c.Client.Close();
}
}