rdb: Debugging Pre-Henrettet (klassisk) ASP-Åpen Tekst Webløsninger Brukergruppe e. V.

  • RedDot CMS Blogg
  • 15.11.2019
  • EN

rdb: Debugging Pre-Executed (classic) ASP

Problemet

jeg er sikker på at ganske mye Hver RedDot Cms Web Solutions Management Server utvikler ville ha kommet opp mot noen pre-executed ASP i sine maler som har mislyktes. Den påfølgende frustrasjon over å ha ingen innebygd metode for debugging eller bare få en slags meningsfull feilmelding UT AV CMS WSMS er en av de mest diskuterte irritasjonsmomenter av produktet. Jo, det Er pre-Execute Debugger plug-in, men for å bruke det, må det gjøres endringer I RDServer.ini-fil. Disse endringene kan gjøre et prosjekt ubrukelig eller kan til og med krasje RedDot Cms Web Solutions Management Server … err … server (jeg har opplevd begge scenarier mange ganger). Sistnevnte kan selvsagt løses ved en omstart, men hvis dette er et travelt produksjonssystem, er det bare ikke praktisk.

Sikkert, Det må Være noen måte å få disse feilene ut av systemet og tilbake til utbygger?

Løsningen

jeg vet ikke om jeg er den første personen til å tenke på dette, men jeg har ikke sett det diskutert før, så forhåpentligvis er dette nyttig informasjon.

Litt Bakgrunn

forhåndsutført ASP gjengis AV CMS WSMS før det sendes til iis for å kjøre. Den resulterende koden sendes tilbake TIL CMS WSMS for inkludering på siden. Selv om DU ikke ser DET, hvis ASP mislykkes, genereres en 500-feil av IIS. Dessverre går denne informasjonen om 500-feilen tapt når data sendes mellom CMS WSMS OG IIS og tilbake igjen.

Angi Egendefinert Feilside

under iis er det mulig å angi en egendefinert feilside for hver type feil som oppstår på webserveren. Dette brukes tradisjonelt til å gi sluttbrukere en meningsfull 404-side på publiserte nettsteder. Vi kan utnytte denne funksjonaliteten til å angi en egendefinert feilside for en 500-feil på cms WSMS-serveren. I Tillegg til Dette har Folkene På Microsoft sett seg klart for å også gi Et Feilobjekt som bare er tilgjengelig fra en 500-feil og returnerer en mengde nyttig informasjon om feilen. Dermed kan vi fange feilinformasjonen og logge den til en fil.

Prosessen

det første vi må gjøre er å lage noen mapper.

  1. opprett en mappe som heter «PreExecute»under cms wsms-mappen din (CMS/ASP).
  2. under den nye mappen, opprett to flere kalt «logger» og «asp». Maskinens IUSR-konto skal ha skrivetilgang til begge mappene.

Neste må vi sette RDExecute og PreExecute innstillinger.

  1. I prosjektet ditt, under «Administrer Prosjektinnstillinger» > «Prosjekt» > «Generelle Innstillinger», velger du «Rediger Innstillinger» Fra Handling-Menyen.
  2. under «RDExecute og PreExecute settings», sett Den «Fysiske banen» til «C:\Program Files\RedDot\Cms\Asp\PreExecute\asp » (eller banen til mappen din hvis installasjonen er annerledes) og» Virtual directory (Iis) » til » / CMS / PreExecute / asp/»

på dette tidspunktet må du kontrollere at forhåndsutførelsen fortsatt fungerer i prosjektet.

nå for å opprette den egendefinerte feilbehandleren.

  1. Lag EN ASP-fil under cms/ASP/PreExecute/asp-mappen, kall det hva du vil, noe Som ASPError.ASP.
  2. Kopier følgende kode inn i 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 %>

Til Slutt må vi konfigurere IIS.

  1. i Internet Information Services (Iis) Manager velger du mappen under «Standard Webområde» (eller hvilket nettsted du bruker FOR CMS WSMS) > «CMS» > «PreExecute» > «asp».
  2. Høyreklikk på mappen og velg «Egenskaper».
  3. Velg kategorien «Egendefinerte Feil». Rull ned til du finner «500; 100» I HTTP-feilkolonnen.
  4. Marker det og klikk På » Rediger…».
  5. Endre » Meldingstype:» TIL » URL «og sett» URL: «til» / CMS / PreExecute / asp / ASPError.asp»

Testing

for å teste det er ganske enkelt. Forutsatt at pre-execution fungerte tidligere, bør du kunne legge til litt ødelagt ASP-kode i malen din (f. eks. <!IoRangePreExecute > < % = funksjonthatdoesnotexist() %><!/ IoRangePreExecute>) og forhåndsvise siden. Du bør få standard (les ubrukelig) CMS WSMS feilside, men du bør også få en loggfil opprettet i CMS/ASP/PreExecute/logs-mappen med detaljert informasjon om ASP-feilen som har oppstått.

Advarsler

hvis DU kjører en klynget CMS WSMS, kan du være forsiktig med denne prosedyren. Da jeg prøvde å endre forhåndsinnstillingene under et gruppert CMS WSMS-miljø, fungerte det ikke bare, det tok også ned publiseringen av alle prosjekter. Jeg har ikke undersøkt dette videre på dette stadiet, hvis og når jeg gjør det, vil jeg legge inn mine funn.

ASP.NET

metoden beskrevet ovenfor fungerer bare For Klassisk ASP. Det ville være flott hvis noen ville beskrive den tilsvarende prosessen for ASP.NET. Noen takers?

Write a Comment

Din e-postadresse vil ikke bli publisert.