ASP.NET4.0で500.23エラー
前回のエントリでデプロイしたWebアプリケーションを実行したら、こんなエラーが。
————————————————-
エラーの概要
————————————————-
HTTP エラー 500.23 – Internal Server Error
ASP.NET 設定が、統合されたマネージ パイプライン モードで適用されないことが検出されました。
————————————————-
エラー情報の詳細
————————————————-
モジュール ConfigurationValidationModule
通知 BeginRequest
ハンドラー StaticFile
エラー コード 0×80070032
要求された URL http://localhost:80/pointchanweb/
物理パス C:inetpubwwwrootPointChanWeb
ログオン方法 未定義です
ログオン ユーザー 未定義です
————————————————-
可能性のある問題
————————————————-
このアプリケーションでは、system.web/httpHandlers セクションで構成が定義されます。
————————————————-
対処方法
————————————————-
構成を system.webServer/handlers セクションに移行します。この手順は手動で実行することも、コマンド ラインから AppCmd を使用して実行することもできます。(例 %SystemRoot%system32inetsrvappcmd migrate config "Default Web Site/")。AppCmd を使用してアプリケーションを移行すると、アプリケーションが統合モードで動作できるようになり、なおかつ、クラシック モードおよび以前のバージョンの IIS でも引き続き動作します。
このエラーを無視しても問題ない場合は、system.webServer/validation@validateIntegratedModeConfiguration を false に設定して無効にできます。
または、アプリケーションをクラシック モード アプリケーション プールに切り替えます (例 appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool")。
これは、アプリケーションを移行できない場合にのみ行ってください。("Default Web Site" および "Classic .NET AppPool" を、アプリケーションのパスおよびアプリケーション プールの名前に設定します) リンクと詳細情報統合モードは、IIS 7.0 以降でASP.NET アプリケーションを実行するときに推奨されるモードです。
Webで調べてみるとASP.NET 4.0でchartコントロールを使用していると、ASP.NET 2.0との互換性に引っかかってエラーになってしまうようです。
参考URL
http://ameblo.jp/alalunga/entry-10630315087.html
http://technet.microsoft.com/ja-jp/library/ff454090.aspx
対応としてはWeb.configにvalidateIntegratedModeConfiguration=false を追加しました。
【変更前】
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ChartImageHandler" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>
【変更後】
<system.webServer>
<!– add for 500.23 Error –>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ChartImageHandler" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>