0

我有一个自定义绑定,我在 CreateBindingElemens 方法中添加各种绑定。如果我有 HttpTransportBindingElement,一切都很好,但下一步我想向它添加传输安全性 (ssl),所以我修改了这样的代码

        BindingElementCollection collection = new BindingElementCollection();
        collection.Add(httpPollingElement);
        if (session == SessionType.HttpSession)
        {
            collection.Add(httpSessionElement);
        }
        else
        {
            collection.Add(reliableSessionElement);
        }

        collection.Add(encodingElement);


        var securityBindingElement = new TransportSecurityBindingElement();
        collection.Add(securityBindingElement);
        collection.Add(httpTransportElement);
        return collection;

但我收到一条错误消息,说绑定“System.ServiceModel.Channels.CustomBinding”的安全功能与生成的运行时对象的安全功能不匹配。这很可能意味着绑定包含 StreamSecurityBindingElement,但缺少支持 Stream Security(例如 TCP 或命名管道)的 TransportBindingElement。删除未使用的 StreamSecurityBindingElement 或使用支持此元素的传输。

我可以确认我的配置中没有 StramSecurityBindingElement。为了使这项工作,我应该添加哪些安全绑定?

4

1 回答 1

1

要使用 ssl,只需添加:

new HttpsTransportBindingElement()

而不是 http 元素。仅使用传输安全时无需添加安全元素。

于 2012-06-21T13:00:02.400 回答