1

谁能告诉我传输和消息级安全码之间的区别。另外,如何使用它们。使用消息安全模式时出现以下错误:

<message algorithmSuite="Default" clientCredentialType="UserName"/>

例外 :

System.ServiceModel.CommunicationObjectFaultedException:通信对象 System.ServiceModel.ChannelFactory`1 无法用于通信,因为它处于故障状态。

4

2 回答 2

3

消息安全对每条单独的消息进行加密以保护敏感数据。传输安全保护端到端网络连接以保护网络流量。

使用以下传输安全标准来决定是否使用它:

点对点。传输安全支持点对点通信,不支持中间场景或协议转换。

流媒体。传输安全可以支持流数据场景。

绑定限制。传输安全性不适用于 wsDualHttpBinding。

身份验证限制。传输安全性不适用于协商、用户名或 Kerberos 直接身份验证。

使用以下消息安全标准来决定是否使用它:

中介。消息安全支持具有中介或协议转换的场景。

加密灵活性。消息安全性允许您加密部分消息,而将其他部分保留为明文。

绑定限制。消息安全性不适用于 netNamedPipeBinding。安全对话。安全对话仅适用于消息安全。

身份验证限制。消息安全性不适用于基本身份验证或摘要身份验证。

于 2012-06-25T09:44:26.137 回答
0

您得到的错误可能不是问题的根源。要查看实际发生的情况,请尝试使用下面定义的服务代理:

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();
    }
}
于 2012-06-25T09:44:44.403 回答