2010年4月27日火曜日

Html.RenderPartialのIntelliTraceがExceptionで大変

Visual Studio 2010のIntelliTraceを使い始めてまず目につくのが下図のようなExceptionの情報だと思う。


Html.RenderPartial("hogehoge")でascxを描写している箇所でFileNotFoundExceptionがいくつも放り出されている。おいおいまじかよ、これどうなってんの?と焦るかもしれないが、これは決して深刻な問題ではない。この現象はデバッグ時にASP.NET MVCがViewのパス解決をキャッシュしないために毎度発生している。なのでweb.configのcompilation debugをfalseにしてやればこの問題は発生しない。

<compilation debug="false">

ちなみにWebアプリをリリースする際にはdebugモードは常にfalseにするように心がけよう。さもなければ、下記のようなデメリットにさいなまれることになる。

  1. 初期ページコンパイルにより時間がかかる(いくつかの最適化バッチが走らないので)
  2. 実行スピードの低下(デバッグ情報が追加されるので)
  3. 使用メモリの増大
  4. スクリプトと画像のキャッシュ無効化

仮にひとつひとつのWebアプリケーションをチェックするのが面倒ならば、machine.config上に下記のセクションを追加してやれば、そのマシン上のWebアプリケーションはすべて強制的にリリースモードで実行される。

<configuration>
<system.web>
<deployment retail=”true”/>
</system.web>
</configuration>

0 件のコメント:

コメントを投稿