WCF + сопоставление по шаблону + IIS6 = 404 с на каждом методе!

Я получаю 404 с при выполнении метода WCF на IIS6, когда включено сопоставление по шаблону.

Все это можно воспроизвести, создав новую службу WCF в VS2008 (новый проект> Приложение-служба WCF). Перейдите к фиктивному методу ('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), я получаю 404, когда пытаюсь получить доступ к методу (хотя я все еще могу просмотрите /services/rest.svc).

Я исчерпал Google и Stackru:(

1 ответ

У меня была такая же проблема со службой WCF, работающей на IIS6.

Я мог бы просмотреть сервис по http://someurl/service.svc, но я бы получил 404 при обращении к методу службы, например http://someurl/service.svc/somemethod.

Исправить, в моем случае, было легко. Тип файла.svc был настроен в IIS для обработки C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll, но моя служба работала в пуле приложений ASP.NET v4.0, поэтому я просто указал тип файла.svc для обработки C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

Другие вопросы по тегам