WCF + маску подстановки + IIS6 = 404 с на каждом методе! - PullRequest
1 голос
/ 07 декабря 2010

Я получаю 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 и StackOverflow: (

1 Ответ

3 голосов
/ 01 марта 2011

У меня только что была такая же проблема со службой 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...