WCF休息服务 - 工作得很好......直到SSL

时间:2014-03-20 15:03:41

标签: wcf rest iis ssl

我有一个运行非常顺利的WCF Rest服务。我刚拿到SSL证书并将其安装在IIS中,添加了自动重定向到https(基本上,强制https)。现在,如果我去“website / ServiceDirectory / Service.svc,我仍然得到”你已经创建了一个服务“的消息,但是当我尝试实际调用该服务时,我发现404没有找到。我已经看了通过大量的文章。我已经禁用了http /启用https。我已经确保我在绑定中启用了“传输”安全性。不确定我是否只是遗漏了什么或者发生了什么。这是我的网络配置,但我'我开始认为它可能是IIS中的东西

  <system.serviceModel>
<client>
  <endpoint address=""
            binding="webHttpBinding" bindingConfiguration="WebBinding"
            behaviorConfiguration="web"
            contract="EngageService.IEngage" name="win"/>
</client>
<bindings>
  <webHttpBinding>
    <binding name="WebBinding">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </webHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<services>
  <service behaviorConfiguration="ServiceBehavior" name="EngageService.Engage1">
    <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
      contract="EngageService.IEngage" bindingConfiguration="WebBinding" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp defaultOutgoingResponseFormat="Xml"/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<protocolMapping>
  <!--<add binding="basicHttpBinding" scheme="http"/>-->
  <add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>

在IIS中,该服务被配置为一个应用程序,正如我所说,它在我切换到https之前完美运行。有没有人看到我的配置文件有问题,或者知道我可能需要检查/更改的任何IIS配置项? 感谢

1 个答案:

答案 0 :(得分:1)

好的,所以这归结为协议映射部分。似乎没有这个映射,webhttpbinding默认为http。添加了webhttpbinding,包括整个部分,以便更容易发现 - 希望这有助于其他人一天。

<protocolMapping>
  <!--<add binding="basicHttpBinding" scheme="http"/>-->
  <add binding="basicHttpsBinding" scheme="https"/>
  <add binding="webHttpBinding" scheme="https" bindingConfiguration="WebBinding"/>
</protocolMapping>

如果你已经尝试了所有其他文章但仍然无法得到它 - 请尝试以上方法。它破坏了http,但我想象的只是因为你在窃取端点。如果您配置了辅助http绑定,我敢打赌它会完美运行。