我可以使用SSL(使用https)并将传输安全性设置为none的WCF绑定吗?

时间:2009-08-12 20:57:38

标签: wcf ssl binding

电贺。我意识到这可能被视为一个重复的问题this,但我得到了一个不同的错误。

我的IIS设置为使用SSL。 我的服务设置相对简单。只是一个简单的登录服务。

当我尝试直接导航到主机上的svc文件时,我收到此错误

由于编译期间发生异常,无法激活服务。异常消息是:此服务的安全设置需要Windows身份验证,但未为承载此服务的IIS应用程序启用。

访问此特定服务时,我不想进行任何身份验证。我是否应该能够使用HTTPS绑定与传输消息信用和客户端身份验证设置为无?

我有一个符合SSL的证书设置,似乎没问题。现在就是这种身份验证的东西。

  <system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="DefaultBehaviour">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceCredentials>
        <serviceCertificate findValue="xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx"
          storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="wsBinding">
      <security mode="Transport">
        <message clientCredentialType="None" />
      </security>
    </binding>
  </wsHttpBinding>
  <mexHttpsBinding>
    <binding name="mex" />
  </mexHttpsBinding>
</bindings>
<services>
  <service behaviorConfiguration="DefaultBehaviour" name="Web.Login.LoginService">
    <endpoint name="wsBinding"
              address="https://staging.system.com/System/LoginService/LoginService.svc"
              binding="wsHttpBinding" bindingConfiguration="wsBinding"
              contract="Web.Login.IOLELoginService" />
    <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration="mex" name="mex" contract="IMetadataExchange" />
  </service>
</services>

1 个答案:

答案 0 :(得分:3)

你应该能够拥有 - 只有你没有这样配置!

  <security mode="Transport">
     <message clientCredentialType="None" />
  </security>

如果您有传输安全性,则需要在clientCredentialType子元素上设置<transport>

试试这个:

  <security mode="Transport">
     <transport clientCredentialType="None" />
  </security>

这应该有希望工作(没有设置现在测试它)

马克