我有一个运行非常顺利的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配置项? 感谢
答案 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绑定,我敢打赌它会完美运行。