2010-12-07 1 views
1

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

ответ

3

Я просто была такая же проблема с сервисом 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 apppool, поэтому я просто указал тип файла .svc t o обрабатывается C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll

+0

Объяснение шагов, которые вы предприняли для достижения этого, было бы очень полезно, спасибо. – robyaw 2012-04-18 07:10:02

 Смежные вопросы

  • Нет связанных вопросов^_^