HttpHandler pas être appelé
J'ai besoin d'écrire un HttpHandler qui serviront jusqu'fichiers JavaScript lequel sont intégrés des ressources .Dll dans mon projet. Une référence dans une vue qui ne peut pas voir une telle ressource, alors j'ai prévu d'utiliser un HttpHandler module qui permettrait d'intercepter une demande avec un chemin d'accès /js/[fichier] , de trouver un correspondant de fichiers intégré et retournez le script.
Le problème est que mon HttpHandler code n'est jamais appelée, en dépit d'essayer beaucoup de différents paramètres dans la section de web.config. Je suis évidemment manque quelque chose, mais avec pas de messages d'erreur, je ne vois pas ce que c'est. Tout ce que je reçois est une 404 à partir du gestionnaire de fichier statique.
T1) ai-je raté quelque chose d'évident?
Q2) Est-il un moyen pour obtenir de l'IIS de me dire pourquoi il n'est pas l'appel de mon gestionnaire?
Résumé: je suis en train de tester sur IIS Express (v8) pour un ASP.NET MVC 4.
J'ai créé un simple bibliothèque qui implémente IHttpHandler et d'y ajouter une référence à cela dans mon test de l'application MVC, et les lignes suivantes dans le web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="true" />
<handlers>
<add name="ejs" path="js/*" verb="*" type="EmbeddedJsHandler.EmbeddedJsHandler, EmbeddedJsHandler" preCondition="integratedMode" />
La bibliothèque est là, mais il n'est jamais appelé. Toute demande avec /js/test.js ou que ce soit seulement les résultats à une erreur 404.
Jusqu'à présent, j'ai essayé beaucoup de différentes configurations et les paramètres dans le gestionnaire de code. J'ai essayé de condition préalable, resourceType="non spécifié", les modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
J'ai essayé chemins:
js/*.js js/* js/*.*
J'ai vérifié le mode intégré les paramètres de la section (dans le système.serveur web), et a confirmé qu'il est.
J'ai cherché un débordement de pile pour des cas similaires, et essayé beaucoup de solutions possibles.. toujours pas de joie.
Heck, même Jon Skeet a ce genre de problèmes!
Pourquoi n'est pas mon IHttpHandler appelée?
OriginalL'auteur Quango | 2012-12-20
Vous devez vous connecter pour publier un commentaire.
Enfin compris par accident - c'était un manque de routes.IgnoreRoute() dans le RouteConfig.cs fichier MVC moteur de routage n'est pas configuré pour ignorer ce chemin, de sorte était de le transmettre au gestionnaire de fichier statique.
Doh!
Merci, c'triés mon problème. @ToboldHornblower ici est la ligne dans mon RouteConfig.cs - routes.IgnoreRoute("PaymentCallback.ashx");
Merci!!!! Perdu 4 sacrément heures!!! Mais enfin arrivé dans votre solution. Merci 100 fois! 🙂
Vous êtes les bienvenus @AlexRebula - c'est quoi DONC!
OriginalL'auteur Quango
Vérifier:
Comment: Inscrivez-vous HTTP Gestionnaires:
Pour enregistrer un gestionnaire HTTP pour IIS 7.0 en Mode Intégré:
Compiler le gestionnaire HTTP classe et copiez l'assemblée dans le dossier Bin, en vertu de l'application de la racine du dossier.
Dans l'application Web.fichier de configuration, créer des gestionnaires d'un élément dans le système.le serveur web de la section.
L'exemple suivant montre comment enregistrer un gestionnaire HTTP qui répond aux demandes de la SampleHandler.de nouvelles ressources. Le gestionnaire est défini comme la classe SampleHandler dans l'assemblée SampleHandlerAssembly.
Remarque: La resourceType attribut remplit la même fonction que le fait de Vérifier l'existence du fichier option dans le gestionnaire des services IIS 6.0.
Pour IIS 7.0 en mode Intégré, uniquement l'inscription dans les gestionnaires d'élément est nécessaire.
OriginalL'auteur Kapil Khandelwal
Je ne peux pas vous le dire directement pourquoi votre gestionnaire ne fonctionne pas, mais je vais vous donner un exemple d'une fonction que nous utilisons et travaille pour nous:
Nous avons également ce segment, qui est au moins nécessaire pour l'exécution de Cassini
Si cela ne vous aide pas, ont tou essayé d'utiliser
path="/js/*"
?OriginalL'auteur Robert Fricke