ELMAH と Glimpse を組み合わせて使用する
ASP.NET でデバッグ作業目的に使用するツールとして、ELMAH と Glimpse がある。
ELMAH に関しては、「プログラミングMicrosoft ASP.NET MVC 第3版ASP.NET MVC 5 対応版」で知りました。
Glimpse については、以下のサイトで知りました。
両方とも便利そうなので、合わせて導入しようとしたら、ちょっとコツが必要だったので記録に残す。
インストール方法
ELMAH
NuGetでELMAH.MVCをインストールする。
Glimpse
NuGetでGlimpse.Mvc5、Glimpse.EF6をインストールする。
ELMAHとGlimpseを組み合わせる
GlimpseからELMAHを参照できるようにするツールをインストールする。具体的には、NuGetでGlimpse.Elmahをインストールする。
この状態で、ELMAHを参照しようとすると以下のJavaScriptエラーがVisual Studio上で発生します。
[続行する]をクリックすれば、いちおう画面を見ることは出来ます。また、GlimpseのElmahタブからも概要は見れます。
しかし、やはりエラーメッセージは無くしておきたい。
対処方法
エラー内容からELMAHの画面で発生しているようなので、Glimpseの対象からELMAHを外します。以下のようにurisタグで指定したパスを除外できます。
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd"> <!-- For more information on how to configure Glimpse, please visit http://getglimpse.com/Help/Configuration or access {your site}/Glimpse.axd for even more details and a Configuration Tool to support you. --> <runtimePolicies> <uris> <add regex=".*/elmah"/> </uris> </runtimePolicies> </glimpse>
これでELMAHのページを直接開いた場合も、GlimpseからELMAHのページを開いた場合もエラーがなくなります。
盲点
ここまで設定して導入したELMAHですが、Glimpseに比べて実はあまり使っていません。
なぜかというと、運用フェイズに入っていないと言うのもありますが、Unity(DIコンテナの方)を使うと、スタックトレースがDI対象のインターフェースまでしか出ないため、YSOD(Yellow Screen of Death)を見てもエラーが特定できないためです。
それでも、いつエラーが起きたかを後から見返せるので、設定しておいて損はないと思います。
動作環境
- Visual Studio 2015 Professional
- ASP.NET MVC 5.2.3
- Entity Framework 6.1.3
- Elmah.Mvc 2.1.2
- Glimpse.Mvc5 1.5.3
- Glimpse.EF6 1.6.5
- Glimplse.Elmah 1.1.1