Come posso smettere di usare IIS7 gestori HTTP?
-
23-09-2019 - |
Domanda
Sto avendo un po 'di gioco in giro con IIS7, solo cercando di eventi di cattura manualmente global.asax e saltare il gasdotto HttpHandler ASP del tutto. A tal fine, ho impostato
<httpHandlers>
<clear/>
</httpHandlers>
<httpModules>
<clear/>
</httpModules>
, ma quando chiamo il server ottengo un YSOD
[HttpException]: No http handler was found for request type 'GET'
at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Che cosa devo fare per prevenire completamente IIS dalla manipolazione cose usando la pipeline convenzionale? Quello che voglio è solo quello di fare Response.Writes nei gestori di eventi e asincrone metodi allestiti in HttpApplication.Init
modifica: La mia domanda era obv. un po 'poco chiaro (mi dispiace per tutti coloro il cui tempo è stato sprecato) - avrei spiegato meglio come quello che sto cercando di fare è piuttosto non convenzionale. Sto cercando di vedere se posso usare IIS per le richieste web manico in un modo simile a node.js - collegando i gestori fino ai metodi asincroni in HttpApplication. A tal fine ho bisogno ASP di smettere di gettare un traballante perché non voglio usare gestori HTTP. Attualmente la mia scommessa migliore è quella di utilizzare un NullHttpHandler per tutte le richieste, ma mi chiedo se posso disattivare completamente il sistema HttpHandler. Le vostre idee!
Soluzione
Hai bisogno di IIS. La richiesta inizia in cantiere IIS, e per ASP .NET gestirlo, IIS deve essere in grado di trovare un gestore HTTP, si può passare la richiesta a. Si passa la richiesta a ASP .NET solo una volta ha trovato un gestore appropriata.
Altri suggerimenti
È necessario aggiungere nuovamente lo StaticFileHandler:
<httpHandlers>
<clear />
<add verb="*" path="*.jpg" type="System.Web.StaticFileHandler" />
</httpHandlers>
So che è un po 'vecchio ... ma se nel vostro esempio. evento BeginRequest
di HttpApplication
assegnare al gestore HttpContext.Current.Handler
non si dovrebbe ottenere questo errore e può lasciare il gestori di sezione in web.config svuotare.