- RedDot CMS Blog
- 15.11.2019
- CS
rdb: ladění předem provedeného (klasického) ASP
problém
jsem si jistý, že téměř každý vývojář RedDot CMS Web Solutions Management Server by narazil na některé předem provedené ASP ve svých šablonách, které selhaly. Následná frustrace z toho, že nemáte vestavěnou metodu ladění nebo dokonce jen dostat nějakou smysluplnou chybovou zprávu z CMS WSMS, je jednou z nejdiskutovanějších nepříjemností produktu. Jistě, je tu Pre-Execute Debugger plug – in, ale použít, že, změny musí být provedeny na RDServer.ini soubor. Tyto změny mohou způsobit, že projekt bude nepoužitelný, nebo dokonce může dojít k selhání serveru RedDot CMS Web Solutions Management Server … err … server (oba scénáře jsem zažil mnohokrát). Ten lze samozřejmě opravit restartem, ale pokud se jedná o zaneprázdněný výrobní systém,není to praktické.
určitě musí existovat nějaký způsob, jak tyto chyby dostat ze systému a zpět k vývojáři?
řešení
nevím, jestli jsem první, kdo o tom přemýšlel, ale neviděl jsem to dříve, takže doufejme, že to jsou užitečné informace.
Některé pozadí
předem provedený ASP je vykreslen CMS WSMS před předáním službě IIS ke spuštění. Výsledný kód je předán zpět do CMS WSMS pro zařazení do stránky. I když to nevidíte, pokud ASP selže, služba IIS vygeneruje chybu 500. Bohužel se tato informace o chybě 500 ztratí při předávání dat mezi CMS WSMS a IIS a zpět.
zadejte vlastní chybovou stránku
ve službě IIS je možné nastavit vlastní chybovou stránku pro každý typ chyby, ke které dochází na webovém serveru. To se tradičně používá k tomu, aby koncovým uživatelům poskytlo smysluplnou stránku 404 na publikovaných webových stránkách. Tuto funkci můžeme využít k nastavení vlastní chybové stránky pro chybu 500 na serveru CMS WSMS. Kromě toho lidé v Microsoftu viděli svou cestu jasnou, aby také poskytli chybový objekt, který je k dispozici pouze z chyby 500 a vrací spoustu užitečných informací o chybě. Můžeme tedy zachytit informace o chybě a přihlásit je do souboru.
proces
první věc, kterou musíme udělat, je vytvořit některé složky.
- ve složce CMS WSMS (CMS/ASP) vytvořte složku s názvem „PreExecute“.
- v nové složce vytvořte další dva nazvané „protokoly“ a „asp“. Účet iusr stroje by měl mít přístup k zápisu do obou složek.
dále musíme nastavit nastavení RDExecute a PreExecute.
- ve vašem projektu v části „Spravovat nastavení projektu“ > „Projekt“ > „Obecná nastavení“ vyberte v nabídce Akce „upravit nastavení“.
- v části „Nastavení RDExecute a PreExecute „nastavte“ fyzická cesta „na“ C:\Program Files\RedDot\CMS\ASP\PreExecute\asp „(nebo cesta ke složce, pokud je vaše instalace odlišná) a“ virtuální adresář (IIS) „na“ / CMS / PreExecute / asp/“
v tomto okamžiku zkontrolujte, zda vaše předběžné provedení ve vašem projektu stále funguje.
nyní vytvořte vlastní popisovač chyb.
- Vytvořte soubor ASP ve složce CMS/ASP/PreExecute/asp, nazvěme to, co se vám líbí, něco jako ASPError.aplikace.
- zkopírujte následující kód do souboru:
<% ' 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 %>
nakonec musíme nakonfigurovat službu IIS.
- ve Správci internetových informačních služeb (IIS) vyberte složku pod „výchozí Web“ (nebo podle toho, který web používáte pro CMS WSMS) > „CMS“ > „PreExecute“ > „asp“.
- klepněte pravým tlačítkem myši na složku a vyberte „Vlastnosti“.
- vyberte kartu „vlastní chyby“. Přejděte dolů, dokud nenajdete „500; 100“ ve sloupci chyby HTTP.
- zvýrazněte jej a klikněte na “ Upravit…“.
- změňte “ typ zprávy: „na“ URL „a nastavte“ URL: „na“ / CMS / PreExecute / asp/ASPError.asp“
testování
pro testování je to docela jednoduché. Za předpokladu, že vaše předběžné provedení fungovalo dříve, měli byste být schopni přidat do šablony nějaký nefunkční kód ASP (např. <!IoRangePreExecute><%= functionthatdoesneexistuje() %><!/IoRangePreExecute>) a náhled stránky. Měli byste získat standardní (číst zbytečné) chybovou stránku CMS WSMS, ale měli byste také získat soubor protokolu vytvořený ve složce CMS/ASP/PreExecute/logs s podrobnými informacemi o chybě ASP, ke které došlo.
varování
pokud používáte clustered CMS WSMS, možná budete chtít být opatrní s tímto postupem. Když jsem se pokusil změnit nastavení před spuštěním v clusteru CMS wsms prostředí, nejenže nefungovalo, ale také zrušilo zveřejnění všech projektů. V této fázi jsem to dále nezkoumal, pokud a kdy Ano, zveřejním svá zjištění.
ASP.NET
výše popsaná metoda funguje pouze pro klasický ASP. Bylo by skvělé, kdyby někdo popsal ekvivalentní Proces pro ASP.NET. nějací odběratelé?