2010-12-07 43 views
1

Je reçois 404s lors de l'exécution d'une méthode WCF sur IIS6 lorsque le mappage générique est activé.WCF + Wildcard Mapping + IIS6 = 404s sur chaque méthode!

Vous pouvez tous reproduire ceci en créant un nouveau service WCF dans VS2008 (nouveau projet> application de service WCF). Accédez à la méthode dummy ('GetData') ... vous remarquerez qu'il renvoie 400 ... c'est bien, car il montre qu'il est toujours en cours de transfert vers WCF.

Cependant: Si vous activez le mappage générique dans IIS6, vous obtiendrez maintenant un 404, ce qui signifie que WCF n'intercepte plus la requête.

Mon code est le suivant:

[ServiceContract] 
public interface IRest { 
    [OperationContract] 
    [WebGet(UriTemplate = "/test")] 
    int Test(); 
} 

Avec le web.config suivant:

<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> 

Tout fonctionne très bien sans cartographie générique; Je peux naviguer vers '/services/rest.svc/test' et je recevrai le résultat attendu.

Cependant, dès que j'active le mappage générique (. *> C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll), je commence à recevoir des 404 lorsque j'essaie d'accéder à une méthode (bien que je puisse toujours voir '/services/rest.svc').

Je suis épuisé Google et StackOverflow :(

Répondre

3

Je viens d'avoir le même problème avec un service WCF en cours d'exécution sur IIS6.

je pourrais parcourir le service sur http://someurl/service.svc, mais je recevrais une 404 quand en tapant une méthode sur le service comme http://someurl/service.svc/somemethod

Le correctif, dans mon cas, était facile.Le type de fichier .svc a été configuré dans IIS pour être géré par C: \ Windows \ Microsoft.NET \ Framework \ v2. 0.50727 \ aspnet_isapi.dll, mais mon service était en cours d'exécution dans une application ASP.NET v4.0, donc j'ai simplement pointé le type de fichier .svc t o être géré par C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll

+0

Une explication des étapes que vous avez prises pour y parvenir serait vraiment utile, merci. – robyaw

+0

Ouvrez IIS, choisissez votre site Web, puis sélectionnez "Mappages de gestionnaires". – Tchami