WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

IIS7 Integrated mode での BlogEngine の実行

by WebSurfer 2010年5月9日 17:30
HttpModule, HttpHandler を <system.web> セクションに定義したときのエラー

このホームページのサーバーは Windows Server 2008 の IIS7 で、アプリケーションプールのマネージパイプラインモードは Integrated mode がデフォルトになっています。

一方、CodePlex のサイトにある Documentation によると、IIS7 を使用する場合、BlogEngine を運用するアプリケーションプールは "Classic .NET AppPool" にしないと、"some of the software will fail in strange ways" と書いてありました。

BlogEngine はホームページ本体とは別アプリケーションなので、自分でサーバーを運用していれば、それのみ "Classic .NET AppPool" にするのは簡単ですが、レンタルサーバーではどうしようもありません(念のため、できないか聞いてみましたが、ダメとのこと)。

Microsoft の MSDN ライブラリの ASP.NET と IIS 7 の統合 などを読んで、対応方法を検討してみました。

それを見ると、問題は web.config における HttpModule と HttpHandler の定義方法のようです。要するに、<system.web> セクションの <httpModules> と <httpHandlers> 内に定義してはダメで、すべて <system.webServer> セクションの <modules> と <handlers> 内に移す必要があるということのようです。

実際に、<system.web> セクションの <httpModules> と <httpHandlers> 内のみに HttpModule と HttpHandler を定義すると、上の写真のようなエラーになります。

対処方法としては、MSDN ライブラリや写真のエラーメッセージに書いてあるように、appcmd.exe migrate config コマンドを実行するのがよさそうですが、レンタルサーバーではどうしようもありません。

仕方がないので、自分の PC でコマンドを走らせて web.config がどのように修正されるか調べ、それに従って手動でサーバーにある web.config を書き換えることにしました。

で、結論から言うと、BlogEngine.NET 1.6.1 の場合、web.config はすでにコマンドを走らせたのと同様な形に対応済みで、修正の必要はなかったです。

というわけで、BlogEngine.NET 1.6.1 は web.config の修正なしで IIS7 Integrated mode で動くということと理解しました。(これだけの対応で本当に済むのかどうかはまだちょっと疑問ですが・・・(汗))

ちなみに、appcmd.exe を走らせると web.config がどのように変わるかというと、<system.webServer> およびその中に <modules> と <handlers> が追加され、<system.web> セクションで定義されている HttpModule と HttpHandler がコピーされます。また、<validation validateIntegratedModeConfiguration="false" /> も追加されます。

要するに、Visual Studio 2008 がデフォルトで作る web.config と同じような内容になるということです。苦労して調べたのに、なんのこっちゃ・・・という感じです。(笑)

Tags: ,

BlogEngine.NET

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar