- RedDot Cms Blog
- 15.11.2019
- RO
rdb: Debugging pre-executat (clasic) ASP
problema
sunt sigur că destul de mult fiecare RedDot CMS Web Solutions Management Server Dezvoltator ar fi venit împotriva unor ASP pre-executate în șabloanele lor, care nu a reușit. Frustrarea care rezultă de a nu avea o metodă încorporată de depanare sau chiar de a obține un fel de mesaj de eroare semnificativ din CMS WSMS este una dintre cele mai discutate neplăceri ale produsului. Sigur, există plug-in-ul Debugger Pre-Execute, dar pentru a utiliza acest lucru, trebuie făcute modificări la RDServer.fișier ini. Aceste modificări pot face un proiect inutilizabil sau poate chiar crash RedDot CMS Web Solutions Management Server …err… server (am experimentat ambele scenarii de mai multe ori). Acesta din urmă, desigur, poate fi remediat printr-o repornire, dar dacă acesta este un sistem de producție ocupat, nu este practic.
cu siguranță, trebuie să existe o modalitate de a obține aceste erori din sistem și înapoi la dezvoltator?
soluția
nu știu dacă sunt prima persoană care se gândește la asta, dar nu am văzut-o discutată înainte, așa că sperăm că aceasta este o informație utilă.
unele fundal
pre-executat ASP este randat de CMS WSMS înainte de a fi trecut la IIS pentru a rula. Codul rezultat este transmis înapoi la CMS WSMS pentru a fi inclus în pagină. Deși nu o vedeți, dacă ASP eșuează, o eroare 500 este generată de IIS. Din păcate, aceste informații despre eroarea 500 se pierd pe măsură ce datele sunt transmise între CMS WSMS și IIS și înapoi.
introduceți pagina de eroare personalizată
sub IIS, este posibil să setați o pagină de eroare personalizată pentru fiecare tip de eroare care apare pe serverul web. Acest lucru este utilizat în mod tradițional pentru a oferi utilizatorilor finali o pagină semnificativă 404 pe site-urile web publicate. Putem folosi această funcționalitate pentru a seta o pagină de eroare personalizată pentru o eroare 500 pe serverul CMS WSMS. În plus, cei de la Microsoft și-au văzut clar drumul pentru a oferi și un obiect de eroare care este disponibil doar dintr-o eroare 500 și returnează o grămadă de informații utile despre eroare. Astfel, putem captura informațiile de eroare și le putem conecta într-un fișier.
procesul
primul lucru pe care trebuie să-l facem este să creăm câteva foldere.
- sub folderul CMS WSMS (CMS/ASP), creați un folder numit „PreExecute”.
- în noul folder, creați încă două numite „jurnale” și „asp”. Contul IUSR al mașinii ar trebui să aibă acces la scriere la ambele foldere.
în continuare trebuie să setăm setările RDExecute și PreExecute.
- în proiectul dvs., sub „administrați setările proiectului” > „proiect” > „Setări generale”, selectați „Editați setările” din meniul Acțiune.
- sub „Setări RDExecute și PreExecute”, setați ” calea fizică „la” C:\Program fișiere \ RedDot \ CMS \ ASP \ PreExecute \ asp „(sau calea către folderul dvs. dacă instalarea dvs. este diferită) și ” directorul Virtual (IIS)” la ” / CMS / PreExecute / asp/”
în acest moment, verificați dacă pre-execuția dvs. funcționează în continuare în proiectul dvs.
acum, pentru a crea handler eroare personalizat.
- creați un fișier ASP sub folderul CMS/ASP/PreExecute/asp, numiți-l cum doriți, ceva de genul ASPError.asp.
- copiați următorul cod în fișier:
<% ' 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 %>
în cele din urmă, trebuie să configurăm IIS.
- în Internet Information Services (IIS) Manager, selectați folderul de sub „site web implicit” (sau oricare site pe care îl utilizați pentru CMS WSMS) > „CMS” > „PreExecute” > „asp”.
- faceți clic dreapta pe folder și selectați „Proprietăți”.
- selectați fila „erori personalizate”. Derulați în jos până găsiți „500;100” în coloana de eroare HTTP.
- evidențiați-l și faceți clic pe „Editați…”.
- schimbați „tipul mesajului:” la „URL” și setați „URL:” la „/CMS/PreExecute/asp/ASPError.asp”
testarea
pentru a testa este destul de simplu. Presupunând că pre-execuția dvs. a funcționat mai devreme, ar trebui să puteți adăuga un cod ASP rupt la șablonul dvs. (de exemplu, <!IoRangePreExecute > < % = functionThatDoesNotExist() %><!/ IoRangePreExecute >) și previzualizați pagina. Ar trebui să obțineți pagina de eroare CMS wsms standard (citit inutil), dar ar trebui să obțineți și un fișier jurnal creat în folderul CMS/ASP/PreExecute/logs cu informații detaliate despre eroarea ASP care a apărut.
avertismente
Dacă executați un CMS wsms grupat, poate doriți să fiți atenți la această procedură. Când am încercat să schimb setările de pre-execuție într-un mediu CMS wsms grupat, nu numai că nu a funcționat, ci și publicarea tuturor proiectelor. Nu am mai investigat acest lucru în această etapă, dacă și când o voi face, voi posta concluziile mele.
ASP.NET
metoda descrisă mai sus funcționează numai pentru ASP clasic. Ar fi minunat dacă cineva ar descrie procesul echivalent pentru ASP.NET. orice takers?