Pourquoi briser la cartographie wildcard IIS mes appels AJAX?
-
13-09-2019 - |
Question
Je suis en train d'utiliser jQuery pour faire des appels AJAX, mais parce que j'ai cartographie wildcard (.NET) dans IIS 6 sous tension, il ne semble pas fonctionner. La désactivation de la cartographie fait tout comme par magie fonctionne.
J'ai mis l'attribut de méthode Web sur les méthodes à la fois une page .aspx et un service Web .asmx, mais aucun travail. Voici l'URL d'exemple que j'utilise pour les appels AJAX:
localhost/UserChecker.aspx/CheckIfUserEmailsExists
localhost/UserChecker.asmx/CheckIfUserEmailsExists
Je dis qu'il doit être quelque chose de la façon dont .NET interprète de l'URL, mais je ne suis pas tout à fait sûr pourquoi. Plus important encore, je ne sais pas comment le résoudre, autre que de désactiver le mappage de wild card! Y at-il une autre façon ???
UPDATE
Le CMS J'utilise (Kentico) fait un peu de routage d'URL, mais même si je saute sur le routage dans le code Global.asax.cs, je reçois encore 404.
Merci d'avance!
La solution
Avec le mappage de caractères génériques sur IIS se déroulera la demande initiale par l'intermédiaire du gestionnaire générique première. Ce sera fait avant toute réécriture d'URL (ou le routage d'URL) par votre CMS.
Je pense que c'est la raison pour laquelle vous obtenez 404.
Vous pouvez aussi désactiver « vérifier le fichier existe » case à cocher sur le mappage générique pour répondre au scénario lorsque l'URL sera plus tard réécrite à autre chose.
Autres conseils
Ce n'est pas une réponse complète mais j'espère que vous pointe dans la direction d'une solution.
Avez-vous essayé d'accéder à l'URL directement dans un navigateur et utilisant des points d'arrêt bien placés pour traquer le problème?
Si vous obtenez 404s il semble que vos règles de routage ne fonctionnent pas.
[Je mettrai à jour si vous pouvez donner un peu plus d'informations sur le comportement que vous voyez]
UPDATE
Je pense que ce qui pourrait se produire est la suivante:
Vous fournissez un mappage séparé pour vos fichiers avec des extensions (dans ces cas .aspx et .asmx):
localhost / UserChecker.aspx / CheckIfUserEmailsExists
localhost / UserChecker.asmx / CheckIfUserEmailsExists
Ces correspondances sont utilisées lorsque vous activez les mises en correspondance de cartes sauvages au large, et les « / CheckIfUserEmailsExists » est manipulé utilisé ou ignoré. Lorsque vous activez les applications génériques de votre routage n'informe pas votre application comment « route » correctement.
Si vous avez supprimé les extensions (avec correspondances génériques activées) fait les travaux suivants?
localhost / UserChecker / CheckIfUserEmailsExists
Ajoutez les URL appropriées à la liste d'exclusion: Utilisez le paramètre « URL » dans l'exclus onglet Manager-> Paramètres du site. ( base documentation d'aide )
Je suggère de vérifier l'URL en dehors de votre cadre de la CMS; Question doit être avec le routage d'URL. Non tsure comment il travaillait sans la mise en correspondance de cartes sauvages.
Questions à comprendre: 1.Did vous avez votre course CMS lorsque vous essayez sans mappage de carte sauvage? 2. Comment ce système CMS interagissent avec IIS; dll IASPI? ou HTTP gestionnaires / modules?