Question

J'ai un service WCF qui est appelé depuis JavaScript côté client.L’appel échoue avec une erreur JavaScript Service is null.La trace de l'assistance WebDevelopment montre que les appels pour charger le fichier de support jsdebug entraînent une erreur 404 (fichier introuvable).

Le redémarrage d'IIS ou l'effacement des fichiers temporaires ASP.Net ou la définition de batch="false" sur la balise de compilation dans web.config ne résout pas le problème.

Depuis le navigateur

https://Monserveur/MonApp/Services/MyService.svc affiche les métadonnées du service

cependant

https://Monserveur/MonApp/Services/MyService.svc/jsdebug donne un 404.

Le problème semble provenir du protocole https.Avec http /jsdebug télécharge le fichier JS de support.

Des idées?

AIT

Était-ce utile?

La solution

Deviner!

Voici la section de configuration des services de web.config

Examinez l'attribut bindConfiguration sur le point de terminaison.La valeur "webBinding" pointe vers la balise de liaison name="webBinding" dans les liaisons et c'est ce qui indique au service d'utiliser la sécurité au niveau du transport en HTTPS.Dans mon cas, la valeur de l'attribut était vide, provoquant l'échec de la requête du service Web au fichier /js ou /jsdebug via HTTPS et une erreur 404.

<services>
      <service name="MyService">
        <endpoint address="" behaviorConfiguration="MyServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Services.MyService" />
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding">
          <security mode="Transport">
          </security>
        </binding>
      </webHttpBinding>
    </bindings>

Notez que l'attribut bindConfiguration doit être vide ("") si le service est accessible via http au lieu de https (lors de tests sur une machine locale sans certificats).

J'espère que cela aide quelqu'un.

Autres conseils

Si vous obtenez toujours la même erreur après tout votre travail possible effectué.Ajoutez simplement un "Service WCF compatible AJAX".

Pour moi, le problème était le suivant :nous avons ajouté MVC à une solution avec routage.Nos services WCF n'ont pas été ignorés.J'ai résolu ce problème en ajoutant la règle suivante (où "WCF" est le dossier dans lequel nous conservons nos services).

routes.IgnoreRoute("WCF/{*pathInfo}");

J'espère que cela fera gagner quelques heures à quelqu'un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top