У меня есть страница сервиса WCF, работающая только с WebGets/WebInvokes через SSL - она отлично работает на моей локальной машине (самоподписанный сертификат). Однако при производстве я могу достичь 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.
Ниже представлен раздел system.serviceModel моего web.config. 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>