c# - microsoft - asp net core 2.1 database



Come impedire che "aspxerrorpath" venga passato come stringa di query alle pagine di errore personalizzate di ASP.NET (5)

Nella mia applicazione Web ASP.NET, ho definito pagine di errore personalizzate nel mio file web.config come segue:

<customErrors mode="On" defaultRedirect="~/default.html">
     <error statusCode="404" redirect="~/PageNotFound.html" />
</customErrors>

Nel caso di un errore 404, il mio sito reindirizza alla pagina default.html , ma passa "aspxerrorpath" come parametro di stringa di query alla pagina di errore personalizzata come segue:

http://www.example.com/default.html?aspxerrorpath=/somepathcausederror/badpage.aspx

Non voglio questo comportamento. Voglio l'URL di reindirizzamento per leggere semplicemente:

http://www.example.com/default.html

C'è un modo per ottenere questo?


Il mio primo pensiero sarebbe quello di creare un HttpHandler che cattura l'url con aspxerrorpath e lo spoglia. Probabilmente potresti fare lo stesso anche con il modulo di riscrittura in IIS7.


Io uso javascript come

if (location.search != "") { window.location.href = "/404.html"; } 

Penso che dovresti implementare / utilizzare l'evento Application_Error in Global.asax, e fare i tuoi reindirizzamenti / elaborazione lì.

Fornendo la chiamata Server.ClearError in quel gestore, non penso che userà la configurazione customErrors affatto.


Se si rimuove aspxerrorpath = / e si utilizza il reindirizzamento della risposta durante la gestione degli errori, si otterrà un'eccezione nel ciclo di reindirizzamento.


Si potrebbe semplicemente inviare i propri parametri url alla pagina di errore

<customErrors mode="On" defaultRedirect="~/default.html?404"> 
               <error statusCode="404" redirect="~/PageNotFound.html?404" /> 
</customErrors>




visual-studio