Avatar billede c-sharp Nybegynder
15. juni 2006 - 14:13 Der er 7 kommentarer og
1 løsning

Lave skudsikker fejl håndtering

Jeg koder asp.net 2.o og bruger masterpage på mit site. Jeg vil gerne have lavet en fejlhåndtering som viser at der er sket en fejl på en side der bruger min masterpage. Men hvis det er forbindelse til databasen eller en evt. vedvarende fejl på selve masterpage skal den vise en fejlmeddelse på en side der ikke bruger masterpage.

Hvordan skruer jeg det sammen?
Avatar billede snepnet Nybegynder
15. juni 2006 - 14:48 #1
Du kan checke på den fejl der er sket, og så viderestille til forskellige sider afhængig af fejltypen.
Generel håndtering af fejl kan du lægge i global.asax:

void Application_Error(object sender, EventArgs e)
{
  // ...
}

Mvh
Avatar billede c-sharp Nybegynder
04. juli 2006 - 09:52 #2
Hej snepnet, Jeg fanger også fejlen i global.asax jeg har så forskellige fejl sider. hvis fejlen kun er på en underside vise der en fejl side som implementere min masterpage, hvis det er en generel fejl skal den vise en fejl side lavet i html. det har jeg lavet på følgende måde:

    void Application_Error(object sender, EventArgs e)
    {
        try
        {
            // Fejlenbeskeden hentes
            Exception ex = Server.GetLastError().GetBaseException();
            fejllogging fejllog = new fejllogging();
           
            // Hvis fejlen er at siden ikke eksistere skal brugeren se fejl3.aspx
            if (ex.StackTrace.Contains("CheckVirtualFileExists(VirtualPath virtualPath)") || ex.Message == "File does not exist.")
            {
                fejllog.logAdvarsel(Request.Url.ToString(), Request.UserHostAddress.ToString(), Server.MapPath("."));
                Response.Redirect("fejl3.aspx");
            }
            else
            {
              // Fejlen logges via fejllog 
              fejllog.logFejl(ex, Request.Url.ToString(), Request.UserHostAddress.ToString(), Server.MapPath("."));
                // Hvis fejlen er på masterpage vis fejl2.htm
                // Ellers vise fejl.aspx som implementere masterpage
                if ((ex.ToString()).Contains("MasterPage.master"))
                    Response.Redirect("fejl2.htm");
                else
                    Response.Redirect("fejl.aspx");
            }           
        }
        catch (Exception ex)
        {
        }
    }

Mit problem er at den ikke altid virker, jeg har været ud for at den er gået i en uendelig løkke fordi den manglede en dll fil. Hvordan kan jeg skrive den fejlhåndtering rigtigt?
Avatar billede snepnet Nybegynder
04. juli 2006 - 14:21 #3
Er du med på at du kan sætte en custom erros sektion ind i din konfigurationsfil?
F.eks.:
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
  <error statusCode="403" redirect="NoAccess.htm" />
  <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
Mvh
Avatar billede c-sharp Nybegynder
04. juli 2006 - 14:59 #4
Jeg logger jo også fejlene i tekstfiler (en tekst fil for manglende sider og en for generelle fejl) kan det give nogle problemer i forbindelse med customErrors?

Hvis jeg bruger customErrors kan jeg vel også ende i en løkke, eller hvad?
Avatar billede c-sharp Nybegynder
09. august 2006 - 10:12 #5
?? :-)
Avatar billede snepnet Nybegynder
09. august 2006 - 11:59 #6
Hmmm... jeg kan ikke se hvad der i din kode skulle give en løkke - du konsumerer jo eventuelle exceptions, og hvad er det for en dll-fil du skriver om?
Mvh
Avatar billede c-sharp Nybegynder
13. september 2006 - 09:17 #7
Nå jeg må heller lukke igen,

snepnet tak for indstatsen, smid et svar så er der point.
Avatar billede snepnet Nybegynder
13. september 2006 - 12:02 #8
Ok :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester