我有一个 WCF 服务页面,仅通过 SSL 运行 WebGets/WebInvokes - 它在我的本地机器上运行良好(自签名证书)。但是,在生产环境中,我可以访问 service.svc(它给了我有关如何使用的消息),但 service.svc/AnyRequest 返回 404。这两个环境都托管在 IIS 7.5 中。
我启用了跟踪,服务甚至没有接收任何方法请求(例如 service.svc/SomeRequest),但是它处理service.svc
得很好。它也在听https://computername.domain.net/path/service.svc
——这正常吗?它通常应该指向https://publicfacing.com/path/service.svc
吗?
另请注意,生产服务器在 IIS 中托管多个站点。
下面是我的 web.config 的 system.serviceModel 部分。SSLBehave 是从这里建议的。
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SSLBehave">
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="https" port="443"/>
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="UserManagement.ajaxAspNetAjaxBehavior">
<webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped" />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="UserManagement.ajax" behaviorConfiguration="SSLBehave">
<endpoint address="" behaviorConfiguration="UserManagement.ajaxAspNetAjaxBehavior"
binding="webHttpBinding" bindingConfiguration="TransportSecurity" contract="UserManagement.ajax" />
</service>
</services>
</system.serviceModel>