WCF 4 Web 服务中的 UsernameToken 和 SSL - 但使用 basicHttpBinding

Posted

技术标签:

【中文标题】WCF 4 Web 服务中的 UsernameToken 和 SSL - 但使用 basicHttpBinding【英文标题】:UsernameToken and SSL in WCF 4 web service - but with basicHttpBinding 【发布时间】:2012-04-15 16:56:10 【问题描述】:

几个月前,我询问了UsernameToken and SSL in WCF 4 web service,并使用 wsHttpBinding 得到了很好的回答。

但是,由于与 Java 客户端不兼容,现在我们不得不恢复使用 basicHttpBinding。我尝试过如下切换配置....

    <bindings>
        <basicHttpBinding>
            <binding name="secureBinding">
                <security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="None"/>
                    <message clientCredentialType="UserName"/>
                </security>
            </binding>
        </basicHttpBinding>         
    </bindings>

然后在服务中使用这个配置...

    <service name="ServiceName">
        <endpoint binding="basicHttpBinding" bindingConfiguration="secureBinding" contract="ContractType" />
    </service>

但是,当我尝试调用此服务时,我收到了一个错误...

提供的 URI 方案“https”无效;预期的“http”。 参数名称:via

我还需要配置什么其他东西才能使其与 basicHttpBinding 一起使用吗?

(请注意:我原来的要求还是一样的——SSL、usernametoken)

【问题讨论】:

部分中设置的地址是什么? 我现在发现这只是使用 WCFStorm 作为客户端应用程序时的问题。该应用程序中出现错误消息,因此似乎是 WCFStorm 中的错误/功能。如果有人知道在 WCFStorm 中解决这个问题的方法,那就太好了 - 否则这个问题可以被关闭。 【参考方案1】:

根据我的 cmets(在原始问题下方),当使用 WCFStorm 作为客户端时,这实际上是一个问题。

这个问题的解决方案是这个问题的答案之一The provided URI scheme 'https' is invalid; expected 'http'. Parameter name: via

这是在 WCFStorm 中单击“配置”设置选项(不是“客户端配置”)。单击该按钮后,单击弹出对话框中的“安全”选项卡。确保“身份验证类型”设置为“无”(默认为“Windows 身份验证”)。

【讨论】:

以上是关于WCF 4 Web 服务中的 UsernameToken 和 SSL - 但使用 basicHttpBinding的主要内容,如果未能解决你的问题,请参考以下文章

WCF Web 服务无法访问 Web Config 中的服务名称

Visual Studio 中的 WCF Web 服务

从VB.NET Web表单调用我的第一个WCF服务中的函数会引发错误。函数调用缺少WCF函数中的参数

WCF - CMS 中的 Web 控制客户端安全性

升级到 .NET 4.5 和 EF5。不再能够部署 WCF 服务。

如何从服务“内部”的代码访问托管在 IIS 中的 WCF 服务的 web.config