- RedDot CMSのブログ
- 15.11.2019
- エン
rdb:デバッグ事前実行(クラシック)ASP
問題
ほとんどすべてのRedDot CMS Web Solutions Management Server開発者は、失敗したテンプレートで事前実行されたASPに対して出てき デバッグの組み込みメソッドを持たないことや、CMS WSMSから何らかの意味のあるエラーメッセージを取得することに対するその後の不満は、製品の最も議論されている厄介なことの一つです。 確かに、Pre-Execute Debuggerプラグインがありますが、それを使用するには、RDServerに変更を加える必要があります。iniファイル。 これらの変更は、プロジェクトを使用できなくするか、RedDot CMS Web Solutions Management Server…err…serverをクラッシュさせることさえできます(私は両方のシナリオを何度も経験し 後者はもちろん再起動によって修正することができますが、これが忙しい本番システムであれば、それは実用的ではありません。
確かに、これらのエラーをシステムから取り出して開発者に戻す方法はいくつかあるはずですか?
解決策
私はこれを最初に考えた人かどうかはわかりませんが、前に議論したことがないので、これが有用な情報であることを願っています。
いくつかの背景
実行前のASPは、IISに渡されて実行される前にCMS WSMSによってレンダリングされます。 結果のコードは、ページに含めるためにCMS WSMSに戻されます。 表示されませんが、ASPが失敗すると、IISによって500エラーが生成されます。 残念ながら、500エラーに関するこの情報は、CMS WSMSとIISの間でデータが渡され、再び戻されると失われます。
カスタムエラーページを入力します
IISでは、webサーバーで発生するエラーの種類ごとにカスタムエラーページを設定することができます。 これは伝統的に、公開されたwebサイトで意味のある404ページをエンドユーザーに提供するために使用されます。 この機能を活用して、CMS WSMSサーバーで500エラーのカスタムエラーページを設定できます。 これに加えて、Microsoftの人々は、500エラーからのみ利用可能で、エラーに関する有用な情報の束を返すErrorオブジェクトも提供することを明確にしています。 したがって、エラー情報をキャプチャしてファイルに記録することができます。
プロセス
最初に行う必要があるのは、いくつかのフォルダを作成することです。CMS WSMSフォルダー(CMS/ASP)の下に、「PreExecute」というフォルダーを作成します。
次に、RDExecuteとPreExecuteの設定を設定する必要があります。
- プロジェクトで、”プロジェクト設定の管理”>”プロジェクト”>”一般設定”で、アクションメニューから”設定の編集”を選択します。
- “RDExecuteおよびPreExecute設定”の下で、”物理パス”を”に設定しますC:\Program Files\RedDot\CMS\ASP\PreExecute\asp”(またはインストールが異なる場合はフォルダへのパス)と”仮想ディレクトリ(IIS)”から”/CMS/PreExecute/asp”へ/”
この時点で、事前実行がまだプロジェクトで機能していることを確認してください。
カスタムエラーハンドラーを作成します。CMS/ASP/PreExecute/aspフォルダの下にASPファイルを作成し、ASPErrorのような好きなものを呼び出します。asp.
<% ' 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 %>
最後に、IISを構成する必要があります。
- インターネットインフォメーションサービス(IIS)マネージャーで、”既定のWebサイト”(またはCMS WSMSに使用しているサイト)>”CMS”>”PreExecute”>”asp”の下のフォルダを選択します。
- フォルダを右クリックし、”プロパティ”を選択します。
- “カスタムエラー”タブを選択します。 HTTPエラー列に”500;100″が表示されるまで下にスクロールします。
- それを強調表示し、”編集…”をクリックします。
- “Message type:”を”URL”に変更し、”URL:”を”/CMS/PreExecute/asp/ASPError”に設定します。asp”
テストする
テストするのは非常に簡単です。 事前実行が以前に機能していたと仮定すると、壊れたASPコードをテンプレートに追加できるはずです(例:<!IoRangePreExecute><%=functionThatDoesNotExist() %><!/IoRangePreExecute>)およびページをプレビューします。 標準の(役に立たない)CMS WSMSエラーページを取得する必要がありますが、発生したASPエラーに関する詳細情報を含むCMS/ASP/PreExecute/logsフォルダーに作成されたログファイ
警告
クラスタ化されたCMS WSMSを実行している場合は、この手順に注意する必要があります。 クラスター化されたCMS WSMS環境で実行前の設定を変更しようとすると、機能しなかっただけでなく、すべてのプロジェクトの公開も停止しました。 私はこの段階でこれ以上調査していません、もしそうなら、私は私の調査結果を投稿します。
ASP.NET
上記の方法は、古典的なASPでのみ機能します。 誰かが同等のプロセスを説明するなら、それは素晴らしいことですASP.NET。任意の受験者?