redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

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上で発生します。

f:id:redwarrior:20161009200331p:plain

[続行する]をクリックすれば、いちおう画面を見ることは出来ます。また、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