web-dev-qa-db-ja.com

IIS 7.5 Win7 Prof. 64ビットで空白ページを返す(HTMLなし))

私はWindows7で開発環境をセットアップしようとしていますが、IISが機能しません。IIS6以降と同じようにすべてをセットアップしたので、基本的な問題は解決しました。私の問題はIIS7とIIS7.5の間で変更されたもの、またはOS内にあるもの。

私のウェブサイトはどれもhtmlを返しません。デフォルトのサイトでも、新しく追加されたサイトでもありません。

もし私が

telnet localhost 80

次に、空白の画面で

GET / <enter>

何も表示されず、単一のヘッダーやHTML要素も表示されません。

GETリクエストではなくガベージを入力すると、次のHTMLが表示されます。

HTTP/1.1 400 Bad Request Content-Type:
text/html; charset=us-ascii Server:
Microsoft-HTTPAPI/2.0 Date: Thu, 17
Sep 2009 17:04:01 GMT Connection:
close Content-Length: 326

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML><HEAD><TITLE>Bad
 Request</TITLE> <META
 HTTP-EQUIV="Content-Type"
 Content="text/html;
 charset=us-ascii"></HEAD>
 <BODY><h2>Bad Request - Invalid
 Verb</h2> <hr><p>HTTP Error 400. The
 request verb is invalid.</p>
 </BODY></HTML>

つまり、IISが存在し、ポート80で要求を処理していることが証明されます。

私のIISログパスでは、ファイルがまったくありません。そのため、何らかの理由でログが書き込まれていません。

IISマネージャ)でWebサイトの基本設定を表示した場合、[接続のテスト]ボタンをクリックすると、権限に関連するエラーが発生します。

サーバーは、組み込みアカウントでパススルー認証を使用して、指定された物理パスにアクセスするように構成されています。ただし、IISマネージャは、ビルトインアカウントにアクセス権があるかどうかを確認できません。アプリケーションプールIDに物理パスへの読み取りアクセス権があることを確認してください。このサーバーがドメインに参加している場合、アプリケーションプールIDがNetworkServiceまたはLocalSystemである場合は、\ $に物理パスへの読み取りアクセス権があることを確認してから、これらの設定をもう一度テストしてください。

私のAppPoolは、実際のユーザーではないように見えるApplicationPoolIdentityとして実行されているため、ApplicationPoolIdentityファイルにアクセス許可を与えることができません。テストとして、IIS_IUSRとパスへのフルアクセスを見つけることができる他のすべてのユーザーにテストを提供しました。

ここまで何をしていても、IIS権限が正しいと言うことはありませんでした。ただし、エラー、特に権限エラー(300s)は見たことがありません。

それで、何かアイデアはありますか? IIS、c:\ inetpubを完全に削除してから、すべてを再インストールしようとしました。ここでは基本的にデフォルトの設定を行っているので、簡単なものでなければなりません。

御時間ありがとうございます...

40
Matt Cofer

解決しました。問題を抱えている他の人のために、これが私がしたことです。

最初に問題を再現する:IIS Windowsの機能の追加と削除メニューで "ASP.NET"を選択してインストールしていました。これは、IIS = .NETアプリを実行しますが、興味深いことに、静的ページ(.html、css、jsなど)を提供できませんでした。私のテストページはhello world .htmlページだったため、提供されていませんでした。

修正するには:静的コンテンツの提供を有効にするには、同じ[Windows機能の追加と削除]リストの[共通HTTP機能]で[静的コンテンツ]を選択する必要があります。これを実行すると、私のテストページは正常に機能しました。

要約:一般的な.NETが静的コンテンツ(CSS、画像、JavaScript)なしでどのように実行されるか理解していないため、ASP.NETを選択するときにMSがデフォルトで静的コンテンツを含めない理由がわかりません。おそらく、インストールのワークフローIISが間違っていました。

静的コンテンツ要求がブロックされていることを見つけるために要求のフローを追跡する方法があったと確信していますが、それを行う方法がわかりません。

86
Matt Cofer

Matt Coferの解像度は正しいです。静的コンテンツを表示するには、初期インストール時に静的コンテンツ機能をインストールしておく必要があります。ただし、機能の追加と削除が機能しないことがわかりました。機能のサブセットのみを示し、IISとは何の関係もありませんでした。

だから...静的コンテンツをインストールする別の方法は次のとおりです:

  1. 開くサーバーマネージャー
    • Start Menu > type "server manager" in search field > click resulting link
  2. Rolesノードを展開します
  3. 右クリックWebサーバー(IIS)ノードでコンテキストメニューを表示
  4. コンテキストメニューからAdd Role Servicesを選択します
  5. Add Role Servicesウィンドウが開いたら、Web Server > Common HTTP Featuresに移動します
  6. 有効静的コンテンツ
  7. クリック次へ
7
Aaronster