2013-05-06 11 views
5

nel mio file web.config ho specificato alcuni errori personalizzati:pagine di errore personalizzate nel file web.config non coprono tutti i percorsi URL

<customErrors mode="RemoteOnly" defaultRedirect="~/Error"> 
    <error statusCode="500" redirect="~/Error" /> 
    <error statusCode="404" redirect="~/NotFound" /> 
</customErrors> 

Ora, alcuni collegamenti, come http://mysite.com/dsflhsdff saranno correttamente reindirizzato alla mysite.com/notfound. Ma alcuni link, come https://mysite.com/videoconference/0/0/0, sono gestiti dal server stesso: al posto della mia pagina di errore personalizzata, ricevo la pagina di errore di IIS (file o dir non trovati). Ad esempio questo collegamento - https://scyk.pl/forums/0/0/0 produrrà l'errore 404 corretto (la mia pagina di errore personalizzata).

Cosa sta succedendo qui? Devo configurare manualmente gli errori personalizzati di IIS? Se è così, come posso farlo?

risposta

0

Se la chiamata di pagina non passa il motore asp.net, allora sì è gestito da IIS.

È possibile farlo setup very easy if you have direct access to the iis, ma IIS offre la possibilità di impostare gli errori personalizzati direttamente dal web.config del proprio sito. Ecco un esempio per l'errore 404:

<system.webServer> 
    <httpErrors> 
     <remove statusCode="404" subStatusCode="-1" /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/PageNotFound.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 
</system.webServer> 

Maggiori informazioni su: http://www.iis.net/configreference/system.webserver/httperrors

1

Questo perché ASP.NET sa nemmeno che c'è stata una richiesta per la pagina htm. IIS gestirà le pagine .htm da solo senza coinvolgere ASP.NET.

È possibile ottenere la vostra pagina personalizzata per mostrare in uno dei due modi:

Get ASP.NET per elaborare le pagine htm: In IIS fare clic destro il tuo sito web directory/virtuale -> Proprietà -> Home/scheda della directory virtuale -> pulsante "configurazione" nella sezione "impostazioni dell'applicazione" -> Aggiungi la mappatura. Imposta la pagina di errore personalizzata per IIS: In IIS fai clic con il pulsante destro del mouse sul tuo sito web/directory virtuale -> proprietà -> scheda errori personalizzati -> imposta l'errore 404 sulla pagina della pagina di errore.

1

È inoltre possibile gestire questo errore nel file Global.asax in Application_Error metodo

esempio

void Application_Error(object sender, EventArgs e) 
    { 
     // Code that runs when an unhandled error occurs 
     Exception exc = Server.GetLastError(); 

     // Handle HTTP errors 
     if (exc.GetType() == typeof(HttpException)) 
     { 
      // The Complete Error Handling Example generates 
      // some errors using URLs with "NoCatch" in them; 
      // ignore these here to simulate what would happen 
      // if a global.asax handler were not implemented. 
      /*if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength")) 
       return;*/ 

      //Redirect HTTP errors to HttpError page 
      /*Server.Transfer("HttpErrorPage.aspx");*/ 
     } 
    } 

Maggiori informazioni: http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling

0

Questo sta accadendo perché IIS è in grado di individuare la pagina di errore personalizzata in alcuni casi. Questo mi è successo con alcune estensioni, ma configurando la mia pagina di errore personalizzata nella sezione Pagine di errore del gestore IIS sono riuscito a colpire la mia pagina di errore personalizzata ogni volta.

Ecco come fare:

entra nella tua IIS Manager e selezionare il sito in questione, trovare l'icona intitolata 'pagine di errore' nella sezione IIS.

Dopo aver fatto doppio clic sull'icona, verrà visualizzato un elenco di codici di stato e il file corrispondente responsabile della consegna dell'errore.

Trova il codice di errore, nel tuo caso 404 (se non esiste puoi aggiungerlo dal menu di destra facendo clic su 'Aggiungi ...'), quindi fare clic sul pulsante 'Modifica ...' nel menu di destra.

Quindi, fare clic sul pulsante di opzione "Esegui un URL su questo sito" nella finestra di dialogo che è stata presentata. Qui è dove fornisci l'URL relativo a cui l'utente verrà reindirizzato.

Dopo aver completato le opzioni nella finestra di dialogo Modifica, avete intenzione di voler selezionare la pagina in errore principale dolore Pagine di nuovo, solo che questa volta clic 'Modifica impostazioni Feature ...'

In le impostazioni di Modifica pagine di errore presentate, assicurati che sia selezionato 'Errori dettagliati per richieste locali e pagine di errore personalizzate per richieste remote'. Assicurarsi inoltre che la pagina inserita nel precedente menu Modifica sia stata immessa nel campo Percorso nella sezione Pagina predefinita della finestra di dialogo Modifica pagine di errore. Infine, il tipo di percorso deve essere impostato su "Esegui URL"

Problemi correlati