Domanda

Proveniente da uno sfondo del desktop Non sono sicuro di come passare le eccezioni che ho rilevato a una pagina di errore per evitare che i miei utenti visualizzino la schermata delle eccezioni standard.

La mia domanda generale è come passare l'eccezione dalla pagina X alla mia pagina di errore in ASP.net?

È stato utile?

Soluzione

Suggerisco di usare la sezione customErrors in web.config:

   <customErrors mode="RemoteOnly" defaultRedirect="/error.html">
      <error statusCode="403" redirect="/accessdenied.html" />
      <error statusCode="404" redirect="/pagenotfound.html" />
   </customErrors>

E quindi utilizzando ELMAH per inviare un'e-mail e / o registrare l'errore.

Altri suggerimenti

Il modello che uso è registrare l'errore in un blocco try / catch (usando log4net), quindi eseguire un response.redirect in una semplice pagina di errore. Ciò presuppone che non sia necessario mostrare alcun dettaglio di errore.

Se hai bisogno dei dettagli dell'eccezione su una pagina separata, potresti voler guardare Server.GetLastError. Lo uso in global.asax (nell'evento Application_Error) per registrare le eccezioni non gestite e reindirizzare a una pagina di errore.

Abbiamo avuto la fortuna di catturare le eccezioni nell'evento Global.asax Application_Error, memorizzarle in sessione e reindirizzare alla nostra pagina di errore. In alternativa, è possibile codificare il messaggio di errore e passarlo alla pagina di errore nella stringa di query.

Puoi anche ottenere l'eccezione da

Server.GetLastError();

Utilizza le pagine di errore personalizzate in asp.net, puoi trovarle in customError nella sezione web.config

Acquisiamo l'eccezione nel file Global.asax, la memorizziamo in Sessione, l'utente viene quindi reindirizzato alla Pagina di errore dove prendiamo l'eccezione per la nostra variabile Sessione e visualizziamo le informazioni del messaggio all'utente.

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
    }

Registriamo il messaggio di errore prima di mostrarlo all'utente.

Penso che tu possa usare il gestore global.asax - Application_Exception per catturare l'eccezione e poi memorizzarla per la visualizzazione in una pagina di errore.

Ma in realtà, la tua pagina di errore non dovrebbe contenere codice che potrebbe causare solo un altro errore. Dovrebbe essere semplice " Oops! qualcosa è andato storto " pagina.

Se desideri dettagli sull'errore, utilizza il Visualizzatore eventi di Windows o ELMAH o utilizzare un meccanismo di registrazione.

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