rdb: hibakeresés előre végrehajtott (klasszikus) ASP-nyílt szöveges webes megoldások felhasználói csoport e. V.

  • RedDot CMS Blog
  • 15.11.2019
  • hu

rdb: hibakeresés előre végrehajtott (klasszikus) ASP

a probléma

biztos vagyok benne, hogy nagyjából minden RedDot CMS Web Solutions Management Server Fejlesztő szembesült volna néhány előre végrehajtott ASP-vel a sablonjaikban, amelyek kudarcot vallottak. Az ezt követő frusztráció, hogy nincs beépített hibakeresési módszer, vagy akár csak valamilyen értelmes hibaüzenetet kap a CMS WSMS-ből, a termék egyik legvitatottabb bosszúsága. Persze, ott van a pre-Execute Debugger plug-in, de használni, hogy változtatni kell az RDServer.ini fájl. Ezek a változások használhatatlanná tehetik a projektet, vagy akár össze is törhetik a RedDot CMS Web Solutions Management Server …err… szervert (mindkét forgatókönyvet számos alkalommal tapasztaltam). Ez utóbbi természetesen újraindítással javítható, de ha ez egy forgalmas termelési rendszer, akkor ez egyszerűen nem praktikus.

biztos, hogy van valamilyen módja, hogy ezeket a hibákat a rendszerből, és vissza a fejlesztő?

a megoldás

nem tudom, hogy én vagyok-e az első ember, aki erre gondol, de még nem láttam korábban megvitatni, így remélhetőleg ez hasznos információ.

Néhány háttér

az előre végrehajtott ASP-t a CMS WSMS rendereli, mielőtt átadnák az IIS-nek a futtatáshoz. A kapott kódot visszaadják a CMS WSMS-nek az oldalba való felvétel céljából. Bár nem látja, ha az ASP meghibásodik, az IIS 500 hibát generál. Sajnos ez az információ az 500-as hibáról elvész, mivel az adatok átkerülnek a CMS WSMS és az IIS között,majd vissza.

írja be az egyéni hibaoldalt

az IIS alatt beállíthat egyéni hibaoldalt a webkiszolgálón előforduló minden hibatípushoz. Ezt hagyományosan arra használják, hogy a végfelhasználók számára értelmes 404 oldalt biztosítsanak a közzétett webhelyeken. Kihasználhatjuk ezt a funkciót, hogy egyéni hibaoldalt állítsunk be egy 500-as hibához A CMS WSMS szerveren. Ezen túlmenően, az emberek a Microsoft látták az utat egyértelmű is, hogy egy hiba objektum, amely csak akkor érhető el egy 500 hiba, és visszatér egy csomó hasznos információt a hiba. Így rögzíthetjük a hibainformációkat, és naplózhatjuk egy fájlba.

a folyamat

az első dolog, amit meg kell tennünk, hogy hozzon létre néhány mappát.

  1. a CMS wsms mappában (CMS/ASP) hozzon létre egy “PreExecute”nevű mappát.
  2. az új mappa alatt hozzon létre még két “logs” és “asp”nevet. A gép IUSR-fiókjának mindkét mappához írási hozzáféréssel kell rendelkeznie.

ezután meg kell adnunk az RDExecute és PreExecute beállításokat.

  1. a projektben a “Projektbeállítások adminisztrálása” > “projekt” > “Általános beállítások” alatt válassza a “Beállítások szerkesztése” lehetőséget a művelet menüből.
  2. az “RDExecute and PreExecute settings” alatt állítsa a “fizikai elérési utat “”értékre C:\Program Files\RedDot\CMS\ASP\PreExecute\asp” (vagy a mappa elérési útja, ha a telepítés eltérő), valamint a” virtuális könyvtár (IIS) “a” /CMS / PreExecute/asp/”

ezen a ponton ellenőrizze, hogy az előzetes végrehajtás továbbra is működik-e a projektben.

most az egyéni hibakezelő létrehozásához.

  1. hozzon létre egy ASP fájlt a CMS/ASP/PreExecute/asp mappában, hívja, ahogy tetszik, valami ASPError.asp.
  2. másolja a következő kódot a fájlba:
    <% ' 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 %>

végül be kell állítanunk az IIS-t.

  1. az Internet Information Services (IIS) Managerben válassza ki a mappát az “Alapértelmezett webhely” (vagy a CMS WSMS-hez használt webhely) > “CMS” > “PreExecute” > “asp”alatt.
  2. kattintson a jobb gombbal a mappára, majd válassza a “Tulajdonságok”lehetőséget.
  3. válassza az “egyéni hibák” fület. Görgessen lefelé, amíg meg nem találja az “500;100” értéket a HTTP hiba oszlopban.
  4. jelölje ki, majd kattintson a “Szerkesztés…”gombra.
  5. módosítsa az “üzenet típusa:” értéket “URL” értékre, az “URL:” értéket pedig “/CMS/PreExecute/asp/ASPError értékre.asp”

tesztelés

a teszteléshez elég egyszerű. Feltételezve, hogy az előzetes végrehajtás korábban működött, képesnek kell lennie néhány törött ASP-kód hozzáadására a sablonhoz (pl. <!IoRangePreExecute>< %= functionThatDoesNotExist() %><!/IoRangePreExecute>) és az oldal előnézete. Meg kell szereznie a szokásos (olvasható haszontalan) CMS wsms hibaoldalt, de be kell szereznie a CMS/ASP/PreExecute/logs mappában létrehozott naplófájlt is, amely részletes információkat tartalmaz a bekövetkezett ASP hibáról.

figyelmeztetések

ha fürtözött CMS WSMS-t futtat, érdemes óvatosnak lennie ezzel az eljárással. Amikor megpróbáltam megváltoztatni a végrehajtás előtti beállításokat egy fürtözött CMS WSMS környezetben, nem csak nem működött, hanem az összes projekt közzétételét is. Ebben a szakaszban még nem vizsgáltam ezt tovább, ha És amikor megteszem, közzéteszem az eredményeimet.

ASP.NET

a fent leírt módszer csak a klasszikus ASP esetén működik. Nagyszerű lenne, ha valaki leírná az egyenértékű folyamatot ASP.NET-van jelentkező?

Write a Comment

Az e-mail-címet nem tesszük közzé.