SSL 経由で WebGets/WebInvokes のみを実行する WCF サービス ページがあります。ローカル マシン (自己署名証明書) で正常に動作します。ただし、運用環境では、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 はhereから提案されました。
<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>