使用传输的WCF总是在我不希望使用HTTPS时尝试使用HTTPS

时间:2010-09-02 21:38:22

标签: wcf https transport credentials

我不断收到以下错误“无法找到与绑定WebHttpBinding的端点匹配方案https的基址。已注册的基址方案为[http]。”这开始是因为我通过添加:

进入基本传输身份验证
  <webHttpBinding>
    <binding name="secureBasic">
      <security mode="Transport">
        <transport clientCredentialType="Basic" />
      </security>
    </binding>
  </webHttpBinding>

谷歌搜索后,常见修复似乎是以下代码,但我没有成功:

<baseAddressPrefixFilters>
  <add prefix="http://mywebsiteurl"/>
</baseAddressPrefixFilters>

但是,没有任何作用。我想要的是在非https连接上使用基本的http身份验证。我没有配置什么,默认情况下它出现WCF想要强制HTTPS连接。有人碰到这个吗?

2 个答案:

答案 0 :(得分:5)

如果告诉WCF使用传输安全模式,则必须使用支持安全通信的传输协议。 HTTP不支持安全通信,因为它是一个明文协议(拦截您的通信的任何人都可以简单地读取正在传输的内容)。 HTTPS确实支持安全通信,因此具有传输安全性的webHttpBinding的唯一选择是使用HTTPS(可以在IIS中配置)。

Here是一篇博客文章,描述了您的错误以及如何使用TransportCredentialOnly解决错误。这大概是basicHttpBinding,但同样适用于webHttpBinding

答案 1 :(得分:4)

如果您只想要传输级别身份验证(=基本身份验证),但不希望传输级别安全通信(= HTTPS),则必须将安全模式设置为TransportCredentialOnly。