久しぶりにASP.NETのサイトを作成していて「500 Internal Server Error」が表示された。
当記事ではASP.NETのサイトを作成していて「500 Internal Server Error」が表示された場合の原因や対策を考察したい。
では本題に入ろう。
「500 Internal Server Error」が表示された
私は先日ASP.NET MVCの幾つかのサイトを.NET Framework 4.8の環境で開発していた。
そのうちの一つのサイトをWeb DeployでWindows VPSに発行したのだが、「500 Internal Server Error」が表示されてしまう。原因不明だ。
下図がChromeブラウザーで「500 Internal Server Error」が表示された時の画面キャプチャーだ。
図 Chromeブラウザーで「500 Internal Server Error」が表示された時の画面キャプチャー
行き成りこんなエラーが表示されてしまうと何が何だか分からない。
「500 Internal Server Error」はサーバーの内部エラー
「500 Internal Server Error」でGoogle検索してみると、その意味はサーバーの内部エラーが発生してWebサイトが閲覧できない場合のエラーなどの説明がある。
まあ要するに「500 Internal Server Error」は何か特定の原因で発生するエラーと言うよりも、ウェブサーバーに関する何らかの設定ミスなどで発生するエラーのようだ。
従って、漠然としていて原因の特定がやり辛い。
今の場合はウェブサーバーにはIISを使っているので、IISの何らかの設定にエラーがあるようだ。
で、しばらく考えていたら、エラーの原因に心当たりがある。
それは、今問題のウェブサイトはVisual Studioを使ってASP.NETで開発しているのだが、その中でweb.configファイルの設定を使ってURLリライト設定を行っているのだ。
ああ、そうだ。
ASP.NETでURLリライトを行うには、Windows VPSに事前にURLリライト機能をインストールしておく必要があるのだ。
それをやっていないことに気づいたので、早速URL Rewrite機能をインストールしてみる。
Windows VPSにURL Rewriteをインストールする
下図がURL Rewrite機能をインストールする前のIISマネージャー画面。
図 URL Rewrite機能をインストールする前のIISマネージャー画面
さて、従来ならこのIISマネージャー画面に新しい機能を追加する場合には、マイクロソフト純正のWeb Platform Installerと言う機能を使っていた。
上図にWeb Platform Installerのアイコンがあるがそれは私がインストールしたものだ。
ところがWeb Platform Installerアイコンをクリックして実行しても、リストに何も表示されない。以前はインストール出来る機能が一覧表示されたので、自分が使いたい機能や不要な機能を選んで追加や削除が出来たのだが。
よく調べてみたらWeb Platform Installer (WebPI) は2022/12/31で廃止されたようだ。
Web Platform Installer
Overview
The Microsoft Web Platform Installer (WebPI) was retired on December 31, 2022. For more information please see this blog post: https://blogs.iis.net/iisteam/web-platform-installer-end-of-support-feed
引用元 https://www.microsoft.com/web/downloads/platform.aspx
と言う事で、URL rewriteモジュールをマイクロソフトのサイトから直接ダウンロードしてWindows VPSにインストールする事にした。
URL rewriteの入手先は以下の通り。
このサイトを開くと以下のように各国の言語に応じてインストーラーが異なるので、Japanese x64を選んでダウンロードした。
図 URL rewriteインストーラーの各国バージョン
そうすると以下のファイル名のインストーラーがダウンロードされる。
これをWindows VPSで実行すると下図が出る。
図 URL rewriteインストーラー(Japanese x64版)を実行
あとは画面に従って進んでいけば、数秒でインストールが完了した(下図)。
図 URL rewriteインストーラー(Japanese x64版)のインストール完了
今回インストールしたのは上図に示すように
IIS URL Rewrite Module 2
と言うやつだ。
IISマネージャを閉じて開くと下図のように「URL書き換え」と言うアイコンが追加された。
図 IISマネージャを閉じて開くと「URL書き換え」と言うアイコンが追加された
これでURL rewrite機能のインストールが完了した。
「500 Internal Server Error」が解消した
「500 Internal Server Error」が表示されていたウェブサイトを表示したところ、エラーは解消して無事にASP.NETのサイトが表示出来た(下図)。
図 ワレ子自作のASP.NET MVCで作った最安価格検索サイト
ちなみに上図のサイトのURLは以下の通り。
参考までに、このサイトでURL Rewriteを使って何をやっているかを説明しておこう。
ASP.NETでサイトを発行する場合、私の場合は以下のように過去バージョンを上書き発行するのではなくて、フォルダをバージョン毎に分けて全ての途中バージョンも残している。
https://wareko.net/SaiyasuKakaku/1.1/
https://wareko.net/SaiyasuKakaku/1.2/
https://wareko.net/SaiyasuKakaku/2.0/
https://wareko.net/SaiyasuKakaku/2.1/ <ーー最新版
そして、ウェブサイト利用者が
でアクセスした場合に、上記最新版のサイトをURL Rewriteで表示させているのだ。
そうする事で、もし最新版2.1に何がバグが見つかった場合には、URL Rewrite設定を行っているweb.configファイルを書き換えれば簡単に一つ前のバージョン2.0のサイトに戻すことが出来る。
この手法は便利なので皆さんにもお勧めしたい。
web.configの記述方法に関しては別の記事で紹介したい。
まとめ
ASP.NETは使えば使うほど便利だと気づく。
当記事では、Visual Studioを使ってASP.NET MVCで作成したウェブサイトをIISに発行した際に発生した原因不明の「500 Internal Server Error」を解決するまでの手順を紹介した。
「500 Internal Server Error」はウェブサーバーの内部エラーなので、原因の特定は簡単ではない。
今回はURL Rewriteモジュールを事前にIISにインストールしていなかった事に気づいたので、それをインストールすることで無事にエラーが解消出来た。
このようにウェブサーバーのエラーは解決してみると案外あっけないのだ。
ちょっとした設定ミスなどでも発生する。
Windows VPS上でIISをウェブサーバーとしてウェブサイトを運営する場合には、主にサーバーマネージャーやIISマネージャーの2つの画面を使うと殆どの設定作業がGUIを使って簡単に行うことが出来る。
今回インストールした「URL書き換え(URL Rewrite)」機能も、そのアイコンをクリックするとGUIが開くので、必要に応じて設定を行えば、任意のURLを書き換えて別のサイトの内容を表示させることが可能だ。
日本でWindows VPSを提供してい主なレンタルサーバー会社
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 |
表 日本国内でWindows VPSサービスを提供している主なレンタルサーバー会社
(続く)
コメント