Existe-t-il une bonne ressource pour les règles concernant l'utilisation de la propriété de chemin httpHandler?Quelles sont les règles concernant les chemins httpHandler dans ASP.NET?
Je vois des résultats mitigés pour quand mon gestionnaire est appelé dans des environnements différents, alors laissez-moi vous expliquer ...
Je veux permettre une URL telle que:
http://mysite/_layouts/myCompany/rest/myservice.svc/param1/param2
Je voudrais Pour invoquer mon gestionnaire uniquement sous le dossier/lien "myCompany", placez le fichier web.config suivant dans le dossier correspondant afin de ne pas affecter le reste de l'application. Cela fonctionne sur certaines machines, mais pas sur d'autres:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="myservice.svc" type="..." validate="false"/>
</httpHandlers>
</system.web>
</configuration>
Maintenant, je dois admettre que je suis un peu surpris que cela a fonctionné car il avait essentiellement pour trouver le « myservice.svc » de la chemin relatif "rest/myservice.svc/param1/param2", mais il l'a trouvé - mais seulement sur deux de mes trois machines de test. Donc, j'ai essayé ce qui suit sur la machine qu'il a échoué sur:
<add verb"*" path="rest/myservice.svc/*/*" type="..." validate="false"/>
Cela a fonctionné quelques fois et est maintenant ne fonctionne pas. Étant le type logique, cela me dérange vraiment qu'après un peu de diligence, je ne peux pas expliquer cela, mais je n'ai pas réussi à le faire fonctionner à nouveau. Voir aussi this question Stack Overflow similaire. Notez que ce qui suit fonctionne, mais il me donne recours à des variables de chaîne de requête pour fournir des paramètres qui ne sont pas idéaux.
<add verb"*" path="rest/myservice.svc/*" type="..." validate="false"/>
J'ai regardé dans les fichiers web.config parent le long du chemin sur deux machines qui donnent des résultats différents pour voir comment ils définissent les httpHandlers et rien comme un sauté problème. Donc, je cherche à comprendre comment ce chemin est utilisé. Pour ce que ça vaut, cela fonctionne dans un site SharePoint (d'où le tag "sharepoint" sur cette question) et je l'utilise pour fournir REST (simple "text/xml") au lieu de SOAP. Je ne veux pas utiliser le WCF complet, car cela fait basculer le bateau un peu trop d'installations de SharePoint, donc j'utilise un gestionnaire HTTP à la place.
En outre, l'erreur que je reçois est la suivante:
virtualPath at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext)
at System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
La réponse [ici] (http://stackoverflow.com/questions/955417/httphandler-to-hook-the-svc-requests) peut être pertinente. – leakyboat