- RedDot CMS Blog
- 15.11.2019
- da
RDB: Debugging Pre-eksekveret (klassisk) ASP
problemet
jeg er sikker på, at stort set alle RedDot CMS-Serverudviklere ville have stødt på nogle forudrettede ASP i deres skabeloner, der har fejlet. Den efterfølgende frustration over ikke at have nogen indbygget metode til fejlfinding eller endda bare at få en slags meningsfuld fejlmeddelelse ud af CMS VSMS er en af de mest diskuterede irritationer af produktet. Sikker på, der er Pre-Udfør Debugger plug-in, men for at bruge det, skal der foretages ændringer til RDServer.INI-fil. Disse ændringer kan gøre et projekt ubrugeligt eller kan endda gå ned på RedDot CMS-Administrationsserveren …err… server (Jeg har oplevet begge scenarier adskillige gange). Sidstnævnte kan selvfølgelig løses ved en genstart, men hvis dette er et travlt produktionssystem, er det bare ikke praktisk.
sikkert, Der må være en måde at få disse fejl ud af systemet og tilbage til udvikleren?
løsningen
jeg ved ikke, om jeg er den første person til at tænke på dette, men jeg har ikke set det diskuteret før, så forhåbentlig er dette nyttige oplysninger.
Nogle baggrund
Pre-udført ASP gengives af CMS VSMS, før de sendes til IIS for at køre. Den resulterende kode sendes tilbage til CMS VSMS til optagelse på siden. Selvom du ikke kan se det, hvis ASP mislykkes, genereres en 500-fejl af IIS. Desværre går disse oplysninger om 500-fejlen tabt, da data sendes mellem CMS og IIS og tilbage igen.
indtast siden brugerdefineret fejl
under IIS er det muligt at indstille en brugerdefineret fejlside for hver type fejl, der opstår på internetserveren. Dette bruges traditionelt til at give slutbrugerne en meningsfuld 404-side på offentliggjorte hjemmesider. Vi kan udnytte denne funktionalitet til at indstille en brugerdefineret fejlside for en 500-fejl på CMS-serveren. Ud over dette har folkene hos Microsoft set deres vej klart for også at give et Fejlobjekt, der kun er tilgængeligt fra en 500-fejl og returnerer en masse nyttige oplysninger om fejlen. Således kan vi fange fejloplysningerne og logge dem på en fil.
processen
den første ting, vi skal gøre, er at oprette nogle mapper.
- under din CMS-mappe (CMS/ASP) skal du oprette en mappe kaldet “Preeksekut”.
- under den nye mappe skal du oprette yderligere to kaldet “logs” og “asp”. Maskinens iusr-konto skal have skriveadgang til begge mapper.
næste skal vi indstille indstillingerne for Rdeksekut og Præeksekut.
- i dit projekt under “Administrer Projektindstillinger” > “projekt” > “Generelle indstillinger” skal du vælge “Rediger Indstillinger” i handlingsmenuen.
- under” rdeksekute og Præeksekute indstillinger “skal du indstille” fysisk sti ” til “C:\Program filer \ RedDot \ CMS \ ASP \ Preeksekut\asp “(eller stien til din mappe, hvis din installation er anderledes) og ” Virtual directory (IIS)” til ” / CMS / Preeksekut/asp/”
på dette tidspunkt skal du kontrollere, at din forudførelse stadig fungerer i dit projekt.
nu for at oprette den brugerdefinerede fejlbehandler.
- Opret en ASP-fil under din CMS/ASP/Preeksekute/asp-mappe, kald det hvad du vil, noget som ASPError.ASP.
- Kopier følgende kode til filen:
<% ' Create the error object. Dim objASPError Set objASPError = Server.GetLastError ' Write the error information to a file (formatting of the second argument is for readability only). WriteToFile "C:\Program Files\RedDot\CMS\ASP\PreExecute\logs\PreExecuteErrors_" & Year(Now) & Month(Now) & Day(Now) & ".log", " Date/Time: " & Now() & vbCrLf & " ASP Code: " & objASPError.ASPCode & vbCrLf & "ASP Description: " & objASPError.Description & vbCrLf & " Category: " & objASPError.Category & vbCrLf & " Column: " & objASPError.Column & vbCrLf & " Description: " & objASPError.Description & vbCrLf & " File: " & objASPError.File & vbCrLf & " Line: " & objASPError.Line & vbCrLf & " Number: " & objASPError.Number & vbCrLf & " Source: " & objASPError.Source & vbCrLf & "############################################################" & vbCrLf, True Function WriteToFile(FileName, Contents, Append) On Error Resume Next If Append = True Then iMode = 8 Else iMode = 2 End If Dim oFs, oTextFile Set oFs = Server.CreateObject("Scripting.FileSystemObject") Set oTextFile = oFs.OpenTextFile(FileName, iMode, True) oTextFile.Write Contents oTextFile.Close Set oTextFile = Nothing Set oFS = Nothing End Function %>
endelig skal vi konfigurere IIS.
- i Internet Information Services (IIS) Manager skal du vælge mappen under “standard hjemmeside” (eller hvilken side du bruger til CMS) > “CMS” > “Preeksekut” > “asp”.
- Højreklik på mappen og vælg “Egenskaber”.
- vælg fanen “brugerdefinerede fejl”. Rul ned, indtil du finder “500; 100” i HTTP-fejlkolonnen.
- Fremhæv det og klik på “Rediger…”.
- Skift ” meddelelsestype:” til “URL” og indstil “URL:” til ” /CMS/Preeksekut/asp/ASPError.asp”
test
for at teste det er ret simpelt. Hvis du antager, at din forudførelse fungerede tidligere, skal du kunne tilføje en brudt ASP-kode til din skabelon (f. eks. <!Iorangepreekseksut>< %= funktion, der gør det ikkeeksisterer() %><!/ Iorangepreecute>) og få vist siden. Du skal få standard (Læs ubrugelig) CMS-fejlside, men du skal også få en logfil oprettet i din CMS/ASP/Preeksekute/logs-mappe med detaljerede oplysninger om ASP-fejlen, der er opstået.
advarsler
hvis du kører et grupperet CMS-system, kan du være forsigtig med denne procedure. Da jeg forsøgte at ændre indstillingerne for forudførelse under et grupperet CMS-miljø, fungerede det ikke kun, det fjernede også offentliggørelsen af alle projekter. Jeg har ikke undersøgt dette yderligere på dette stadium, hvis og når jeg gør det, vil jeg sende mine resultater.
ASP.NET
metoden beskrevet ovenfor fungerer kun for klassisk ASP. Det ville være dejligt, hvis nogen ville beskrive den tilsvarende proces for ASP.NET. nogen takers?