ASP.NET で作成した Web アプリケーションは、開発中と実稼動時では設定の変更を行う必要があるものがあります。ここでは、web.config で設定する compilation タグの debug 属性について紹介します。ついつい忘れがちになることではないかと思います。
スポンサーリンク
compilation タグの debug 属性
開発時 : true
運用時 : false
※ パフォーマンステストの場合にも false に設定する必要があります。
『 Microsoft Web 開発 ガイドライン ~ ASP.NET プログラミング エッセンシャル ~ (リンク切れ) 』 によりますと、
- ページがバッチコンパイルされない。
- ページがタイムアウトしない。Web サービスエラーなどの問題が発生したとき、Web サーバーが要求をキューに入れ始め、 応答しなくなってしまう場合があります。
- Temporary ASP.NET Files フォルダで追加的なファイルが生成される。
- 生成コードに System.Diagnostics.DebuggableAttribute 属性が追加される。 これにより、生成コード情報に対する追加的なトラックが発生し、やはり確実な最適化を妨げられてしまいます。
といったことがあるとのことです。
web.config 設定方法
VS2008 での web.config の設定例になります。下記のようにデフォルトでどのように設定するべきかも、親切なことにコメントで記述してありますが忘れがちです。気づかない方もいることでしょう。
<?xml version="1.0"?> <configuration> <system.web> <!-- デバッグ シンボルをコンパイルされたページに挿入するには、compilation debug="true" に設定します。 この設定はパフォーマンスに影響するため、開発時のみこの値を true に設定してください。 Visual Basic オプション: データの損失が発生する可能性のあるすべてのデータ型の変換を無効にするには、 strict="true" に設定します。 すべての変数の定義を強制するためには、explicit="true" に設定します。 --> <compilation debug="false" strict="false" explicit="true"> <assemblies> ・・・・・・ </assemblies> </compilation> </system.web> </configuration>
ページ単位でデバッグの設定
ページ単位でも @Page ディレクティブでデバッグの設定が可能ですが(デフォルトではfalse)、個人的にはページ単位でデバッグの設定を行うことはほとんどないのではないかと思います。
<%@ Page debug="false" Language="vb" AutoEventWireup="false" ... %>