2011-08-05 12 views
1

2010年のビジュアルスタジオC#Webプロジェクトをプロジェクト設定で "Use Visual Studio Development Server"を使用して実行すると、アプリケーションが正常に開き、CSSレンダリングとすべてのイメージレンダリング。vs2010でサイトを開発しましたが、ローカルのIISに変更してプロンプトを表示

ローカルIIS Webサーバーを使用するようにプロジェクトのプロパティを変更すると、プロジェクトを実行しようとします。 リンクしているimages/cssファイルの数は、ほぼ同じくらい多く表示されます。私はキャンセルをクリックし続ける場合、Webページが表示されますが、すべての画像がなく、CSSファイルは表示されません(書式は地獄のようです)。

これは何らかのセキュリティ上の問題であるはずです。私はWeb設定ファイルに "Windows"認証を使用するプロジェクト設定を持っており、匿名アクセスも有効にしています。私はネットワーク/ネットワークサービスアカウントを追加し、完全な権利を与えました。ローカルマシンにASPNETアカウントを追加してフルアクセス権を与えました。私はユーザーのドメインを追加して、それらに完全なアクセス権を与えるためにも、必死になってきました...

幸運なことに私は依然としてプロンプトを表示します。 URL: http://localhost/mysite/images/myimage.jpg私はエラーを取得する:

Access is denied. Description: An error occurred while accessing the resources required to serve this request. You might not have permission to view the requested resources.

Error message 401.3: You do not have permission to view this directory or page using the credentials you supplied (access denied due to Access Control Lists).

私はこの仕事を得るために行うまたは変更するには、他に何かわからない....

答えて

1

あなたは(エラーメッセージ401.3を見ているエラーメッセージ:指定した資格情報(アクセス制御リストのためにアクセスが拒否されました)を使用して、このディレクトリまたはページを表示する権限がありません)は、通常、A Webアプリケーションを実行するプールユーザーには、要求されているCSSおよびイメージファイルに対するNTFS読み取りアクセス権がありません。

Webアプリケーションは、ユーザーが割り当てられているアプリケーションプールで実行されます。サイトの基本設定にチェックマークを付けると、アプリケーションが使用しているアプリケーションプールを見つけることができます。

what app pool am I using

あなたが使用しているアプリケーションプールを知ったら、あなたは、アプリケーションプールをチェックすることにより、アプリケーションプールことを実行するように構成されているユーザーを表示アプリのプールの[詳細設定]を選択し、[詳細設定]で見ることができます - >プロセスモデル - > ID。デフォルトでは

what user is my app pool using

、アプリケーションプールはAppPoolIdentityユーザー(ちなみに、あなたがそれを必要とする場合には、このユーザのユーザ名がIIS APPPOOL\ApplicationPoolNameですので、私の場合には、それはIIS APPPOOL\mywebappだろう)を使用するように設定されています。このユーザーは、UsersグループとAuthenticated Usersグループの両方のメンバです。お使いのアプリケーションプールがAppPoolIdentityユーザーを使用するように設定されている場合は、あなたが持っている権限の問題を解決する最も簡単な方法は、Usersグループ少なくとも読む&は、フォルダの内容の一覧表示を実行していることを確認することですは、アプリケーションのWebルートフォルダにアクセスし、すべてのファイルとサブディレクトリにアクセスします。私のテストマシンでは、認証されたユーザーはフルコントロールを除いて、すべてのアクセスを許可されています。 (注:正確性のために、これらのACLはC:の下に新しいフォルダを作成するたびに適用されます。必要に応じて、認証されたユーザーを追加したり、ユーザーの読み取りアクセス権を指定せずに立ち去ることができます。必要な実際の最小限のアクセスがここにあるかどうかを判断しようとはしません)。

これらのアクセス許可を指定するには、WindowsエクスプローラでWebアプリケーションを含むフォルダを右クリックし、[プロパティ] - [セキュリティ] - [編集]をクリックしてから、グループを追加します。グループを追加したら、[詳細設定]ボタン> [権限の変更]をクリックし、[すべての子オブジェクトの権限を置き換える]チェックボックスをオンにし、[OK]をクリックしてフォルダ内のすべての子オブジェクトに権限を与えます。以下)。この操作を完了したら、.cssファイルの1つをチェックして、グループが正しく追加されたことを確認できます。

enter image description here

これらのアクセス許可を追加したら、IISは、CSSファイルや画像ファイルをアップに役立つことができるはずです。

Windowsログインプロンプトが表示される場合は、Webアプリケーション用のIISの「認証」セクション(後述)で「Windows認証 - 401チャレンジ」が有効になっている可能性が最も高いです。その設定が指定されていない場合は、適切なACLを持たないファイルを表示しようとするとプロンプトが表示されません。代わりに、エラーメッセージが表示されます。プロンプトは表示されません。

enter image description here

私は、Windows 7 Ultimateを使用してこの情報を検証してIIS 7.5を、あなたは別のOS YMMVを使用しているので、もし、私が説明するようにIISが振る舞うべきだと考えています。

希望に役立ちます。ご不明な点がございましたら、お知らせください。

+0

Mineは、ApplicationPoolIdentityはそれが正常だと言いますか? – oJM86o

+0

ok DefaultAppPoolを追加しましたが、それでも同じ問題があります。私はIIS7も再開しました。 – oJM86o

+0

これは私が言っていることです - 私のアプリケーションのアプリケーションプールはDefaultAppPoolで設定されています。 – oJM86o

関連する問題