Я получаю 404s при выполнении WCF-метода в IIS6 при включенном сопоставлении подстановок.WCF + Подстановочный знак + IIS6 = 404s на каждом методе!
Вы все можете воспроизвести это, создав новую службу WCF в VS2008 (новый проект> приложение WCF Service Application). Перейдите к методу фиктивного метода ('GetData') ... вы заметите, что он возвращает 400 ... это нормально, потому что он показывает, что он все еще пересылает WCF.
Однако:, если вы активируете сопоставление подстановочных знаков в IIS6, теперь вы получите 404, то есть WCF больше не будет перехватывать запрос.
Мой код выглядит следующим образом:
[ServiceContract]
public interface IRest {
[OperationContract]
[WebGet(UriTemplate = "/test")]
int Test();
}
Со следующим web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceX.RestBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceX.RestBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />
<services>
<service behaviorConfiguration="ServiceX.RestBehavior"
name="ServiceX.Rest">
<endpoint address="" behaviorConfiguration="ServiceX.RestBehavior"
binding="webHttpBinding" contract="ServiceX.IRest" />
</service>
</services>
</system.serviceModel>
Все отлично работает без подстановочных отображения; Я могу перейти к '/services/rest.svc/test', и я получу ожидаемый результат.
Однако, как только я включаю подстановочное сопоставление (. *> C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll), то я начинаю получать 404s при попытке доступа к методу (хотя я все еще могу посмотреть '/services/rest.svc').
Я исчерпал Google и StackOverflow :(
Объяснение шагов, которые вы предприняли для достижения этого, было бы очень полезно, спасибо. – robyaw 2012-04-18 07:10:02