Problema utilizzando personalizzato HttpHandler per elaborare le richieste di entrambi aspx e non-estensione pagine in IIS7

StackOverflow https://stackoverflow.com/questions/1919225

Domanda

che sto cercando di elaborare sia "aspx" e le richieste di pagina non estensione (vale a dire sia contact.aspx e / contatti /) utilizzando una consuetudine HttpHandler in IIS7. Il mio gestore funziona bene in entrambi un caso o l'altro, ma non appena provo a elaborare entrambi i casi, funziona solo per uno. Si prega di vedere gestori snippet dal mio web.config sotto:

se continuo solo mappatura a "* aspx" allora tutte le richieste aspx vengono elaborati correttamente, ma le richieste ovviamente senza estensione non funziona:

<add name="AllPages.ASPX" path="*.aspx" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />

Se cambio la mappatura a "*" allora tutte le richieste senza estensione vengono elaborati correttamente, ma "aspx" richieste che devono ancora essere gestiti da questo gestore smettono di funzionare. Si noti che ho aggiunto la voce StaticFiles al fine di elaborare i file che si trovano su disco come immagini, css, js, ecc

<add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
<add name="StaticFiles" verb="GET,HEAD" path="*.*" type="System.Web.StaticFileHandler" resourceType="File" />
<add name="AllPages" path="*" verb="*" type="Test.PageHandlerFactory, Test" preCondition="" />

La cosa pazzesca è che quando carico una richiesta di "aspx" (con il 2 ° configurazione mostrata) IIS7 dà un errore 404 non trovato. L'errore dice anche che la richiesta viene elaborata dal gestore StaticFiles. Ma ho fatto in modo di aggiungere resourceType = "File" per la StaticFileHandler al fine di evitare questo. Secondo MS questo significa che la richiesta è solo per "i file fisici sul disco". Am i travisamento / interpretare la parte "sul disco"?

Il mio file aspx non è sul disco, è per questo che voglio utilizzare il gestore, in primo luogo.

È stato utile?

Soluzione

La seconda configurazione causerà * aspx ottenere gestito da StaticFileHandler perché esistono i file in modo che soddisfino i criteri per il gestore. Tuttavia, il gestore è configurato per non servire questi file e produce un messaggio di 404, invece.

Una soluzione migliore sarebbe usare un'implementazione HttpModule come URL Rewrite Module di riscrivere i percorsi virtuali per pagine o gestori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top