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

BlogEngine の修正

by WebSurfer 2010年5月8日 15:56

ブログの見栄えの改善のため、以下の処置を行いました。備忘録として書いておきます。一番目から三番目は BlogEngine.NET 1.6.1 の設計に関わるもので、他の方にも起こる問題です。その他は、自分が CSS を変更したことに伴う不具合の修正です。

  • 「検索」で、タイトルの表示が「の検索結果 'hoge'」(英文向け)となる ==> search.aspx.cs で Thread.CurrentThread.CurrentUICulture によって CultureInfo を取得し、その Name プロパティが "ja-JP" または "ja" の場合はテレコにするよう処置を分けた("ja" は Firefox 対策です)。
  • 「検索」で、検索結果の URL 情報が一行に収まらない ==> search.aspx の中のその部分のコード <span class="url"><%# ShortenUrl((String)Eval("RelativeLink")) %></span> 一行をコメントアウトして表示されないようにした。本質的な解決になっていませんが、空白やハイフンが入らない長い英数字を途中で改行する対処方法がどうしても見つかりません。
  • 「関連するブログ」で、テキストの折り返しがされない ==> style.css で #relatedPosts span の display: inline-block を削除。何故か IE8 では互換表示でないと折り返されません。IE6, Firefox, Opera, Safari では問題なく折り返されます。削除すると思わぬところで副作用があるかもしれませんが、この見栄えの悪さは我慢できないレベルなので削除しました。
  • 「コメントを書く」で、E-mail の行が一行に収まらない ==> style.css で .commentForm input の width を 300px から 190px に変更。
  • 「検索」で、TextBox の行が一行に収まらない ==> CheckBox の直前に <br /> を追加して改行した。
  • Widget 内の検索用の TextBox と Button が一行に収まらない ==> style.css で #searchbox #searchfield の width を 180px から 110px に変更。

-------- 2010/6/8 追記 --------

2 番目の問題は Slug の使用 で解決できましたので、コメントアウトしたコードを元に戻して復活させました。

Tags:

BlogEngine.NET

Theme の作成

by WebSurfer 2010年5月5日 22:38

ホームページ本体の外観とマッチするようにブログのページのテーマを作成してみました。出来具合はいかがでしょうか?

ハイパーリンクの色など細かい(?)点でマッチしてないのはご愛嬌ということで。(汗) そのうち、時間を見つけて修正していく予定です。

もともとよく考えて作ってあって、大きな変更なしで既存のページの表示にあわせることができました。ただし、BlogEngine.NET のせいではないのですが、ちょっと(かなり)ハマってしまったことがあります。開発環境で表示が OK になったので、サーバーにアップすると表示が期待したとおりになりません。同じ IIS7, IE8 なのに何故違うのかかなり悩みました。

互換表示でイントラネットサイトを表示する

4 時間ぐらい悩んで、やっと分かった原因は、IE8 の標準表示と互換表示の違いでした。

開発環境において、都合で、IIS7 のサイトバインドの編集の [ホスト名] をコンピュータ名に設定していたんですが、それだと IE8 のデフォルトの設定の [互換表示でイントラネットサイトを表示する](写真参照)に引っかかって、互換表示になってしまうんですよね。

localhost の場合はそういうことはなく標準表示になるので、開発環境と実環境で IE8 の表示が違うという問題はなかったのですが・・・  小さな親切、大きなお世話って感じです。(笑)

あ、そうそう、[AMPL フィルター] をクリックすると出てくるポップアップウィンドウの表示が、日本語表示では崩れるのも直しました。

こちらの方は CSS の修正ではなく、blog.js の filterByAPML: function() の中の textbox の長さを少し短くして対応しました。

Tags:

BlogEngine.NET

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  2017年2月  >>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

View posts in large calendar