ASP.NET MVCのデバッグ時にIIS Expressがアクセス拒否エラーを表示する


102

ASP.NET MVC 3プロジェクトを作成し、開発時にIIS ExpressをWebサーバーとして使用しています。デバッグしようとすると、次のエラーメッセージが表示されます。

これをどのように解決できますか?

「/」アプリケーションでのサーバーエラー。

アクセスが拒否されました。説明:この要求を処理するために必要なリソースへのアクセス中にエラーが発生しました。サーバーは、要求されたURLにアクセスするように構成されていない可能性があります。

エラーメッセージ401.2 .:権限がありません:サーバーの構成が原因でログオンに失敗しました。指定した資格情報とWebサーバーで有効になっている認証方法に基づいて、このディレクトリまたはページを表示する権限があることを確認してください。詳細については、Webサーバーの管理者にお問い合わせください。


3
管理権限なしでIISExpressを実行していますか?
chandmk 2012年

2
したがって、しばらく頭をぶつけた後、VSが既定のページを設定しておらず、IISExpress.exeがフォルダーの一覧を表示せず、それを明確にしていないことが、ようやくわかりました。
マークアレン

回答:


113

Visual Studioを使用している場合は、ソリューションエクスプローラーでプロジェクトを左クリックして、[ プロパティ]ウィンドウで[Windows認証]プロパティを[ 有効 ]に変更することもできます。


2
これはVisual Studio 2012に固有のものではなく、少なくともVisual Studio 2010で作成できます。
ロイック・ロペス

5
VS 2013年に私のために働いた
kaybee99

2
匿名認証も無効にする必要があります。
艶をかけられた2015年

1
ソリューションエクスプローラーで、ソリューションノードの下のプロジェクト名をクリックし、[プロパティ]ウィンドウに切り替えると、プロパティWindows認証が有効に設定されていることがわかります
sairfan

1
プロパティウィンドウのどこにもこの設定が表示されません。私はVS 2015使用しています
マーク・Bonafe

99

この問題の原因は、IIS ExpressがWindowsAuthenticationを許可していないことでした。これは設定によって有効にすることができます

<windowsAuthentication enabled="true">

C:\ Users [username] \ Documents \ IISExpress \ configにあるapplicationhost.configファイル内。


19
Visual Studio 2010および2012では、プロジェクトごとにこの設定を追加できるため、グローバル設定はデフォルトから変更されません。stackoverflow.com/ a / 7168308/23566を
Robert Claypool

私もこのエラーを取得していますので、私は、その設定をしようとしていますVS 2013のは、それが助け場合、私はあなたが知ってもらおう見てみましょう、sporiadically。
マット

2
%userprofile%\ documents \ iisexpress \ config \ applicationhost.configを使用するとさらに便利です。私はDにいました:(ありがとうDan!danesparza.net/2014/09/…
Jeramy Rutley

これは私にとってうまくいった唯一の解決策です、どうもありがとう!
Mohammad Anini 2016

VS 2017でこれを試してみましたが、うまくいきませんでした。Jasonによって投稿されたソリューションは機能しました。
myroslav 2018

73

私はジェイソンの答えを使用しましたが、プロパティに入る方法を明確にしたいと思いました。

  1. ソリューションエクスプローラーでプロジェクトを選択する

ここに画像の説明を入力してください

  1. F4 プロパティを取得する(右クリックプロパティとは異なる)
  2. Windows認証有効に変更

ここに画像の説明を入力してください


3
これを詳しく説明し、変更が必要なのはF4プロパティであることを指定していただき、ありがとうございます。
PeterDNCO 2017年

1
ありがとうございました!「匿名認証」も「有効」に設定する必要がありました。
Mahesh

1
どうもありがとう!
FunMatters 2018年

1
あなたは美しいです。
kosherjellyfish

1
私はVS 2015を使用していますが、これは存在しません!
Mark Bonafe

18

IIS Expressでのホスティング:1.ソリューションエクスプローラーでプロジェクトをクリックして、プロジェクトを選択します。2.プロパティペインが開いていない場合は、開きます(F4)。3.プロジェクトの[プロパティ]ペインで、次の操作を行います。a)[匿名認証]を[無効]に設定します。b)「Windows認証」を「有効」に設定します。


12

私の場合、ファイルを開く必要がありました:

C:\...\Documents\IISExpress\config\applicationhost.config

私はこれをファイルの中に入れました:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

User=""パーツを取り外したところです。私はこれがどうやってそこに到達したのか本当に知りません... :)

注:の最後にapplicationhost.config次のようなものがあることを確認してください:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

こちらもご覧くださいhttps : //stackoverflow.com/a/10041779/114029

これで、期待どおりにログインページにアクセスできます。


1
私はあなたの手順に従いましたが、それでも私にとってはうまくいきません。vs2010から開いた場合は正常に機能し、vs 2013の問題は何
ですか

@ user1016740この問題を解決するためにたどる可能性やパスが多すぎるため、私にはわかりません。ここで説明した手順は、あなたの環境とは異なると思う私の環境でそれを解決しました。
Leniel Maccaferri 2014

8

私の場合、VSからのアプリの前回の実行でURLが予約されました。コンソールで実行すると、これを確認できます。

netsh http show urlacl

この予約を削除するには、これを昇格したコンソールで実行しました。

netsh http delete urlacl http://127.0.0.1:10002/

これらの手順問題が解決したことがわかりました。

VS2013を使用しています


これは、一度に複数のポートでサイトを実行するようにapplicationhost.configを編集したことがある場合に非常に便利です。.configからエントリを削除しても、netshの予約は削除されません。ありがとう。
Dusda 2014年


3

私も同じ問題を抱えていて、ようやくそれを克服することができました。

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

別のポート番号を選択しましたが、すべてうまくいきました!


1

上記のどれも私のために働いていませんでした。これは、今日まで私のために働いていました。その後、ラップトップでホストされた接続を作成していて、ワイヤレスネットワーク接続でインターネット接続を共有していることに気付きました。

私の問題を修正するには:

[コントロールパネル]> [ネットワークとインターネット]> [ネットワーク接続]に移動します

お持ちのセカンダリワイヤレスネットワーク接続(私の名前はワイヤレスネットワーク接続2)を右クリックし、[プロパティ]をクリックします。

上部の[共有]タブに移動します。

「他のネットワークユーザーがこのコンピュータのインターネット接続を介して接続することを許可する」というボックスのチェックを外します。

[OK]> [適用]をクリックします。

お役に立てれば!


1

私はweb.configファイルを開き、このセクションを見つけて削除しました:

<authorization>
  <deny users="?" />
</authorization>

と私のサイトが立ち上がったが、認証に問題があります。


さて、それは問題を解決するのに役立ちましたが、今私は修正する必要がある他のいくつかの問題を抱えています。
Jamshaid Kamran

0

IIS EXPRESSでこの正確な問題を修正しました。アプリケーションホストの.configを以下に固有の場所セクションに編集することで修正しました。Visual Studio 2012でWindows認証を設定しましたが、XMLに入ると次のようになりました。

以下に示すように、Windows認証タグを下に追加する必要がありました。

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>

0

Hosted Providerを使用してSharePoint用のシンプルなアプリを作成しようとして、この問題に苦労してきました。

applicationhost.configを実行した後、セクションで、basicAuthenticationがfalseに設定されました。私のシナリオでは、401.2を超えるようにtrueに変更しました。IIS Expressのapplicationhost.configを見つける方法については、他にもたくさんのリンクがあります。


0

この「完全な」答えはどこにも見当たりませんでした。私はこれを投稿した後、ポート番号の変更に関するものを見たので、まあ。

Visual Studioのプロジェクトプロパティで、プロジェクトのURLがIISでサイトバインディングに使用されているのと同じURLまたはポートに割り当てられていないことを確認してください。

私はこれの「理由」を調べていますが、頭の上の私の仮定は、仮想ディレクトリを作成するときにIISとVisual StudioのIIS Expressの両方が同じディレクトリを使用し、Visual Studioは新しい仮想ディレクトリしか作成できず、変更できないということです。 IISがサイトへのバインディングを適用するときに作成したもの。

理由を自由に修正してください。


0

エラーページはログインページの後ろにありましたが、ログインページのいずれかのコントロールにエラーがあり、無限ループが発生しました。

問題のあるページからすべてのコントロールを削除し、正しいコントロールが特定されて修正されるまで、1つずつ追加し直しました。


0

私の場合(ASP.NET MVC 4アプリケーション)、Global.asaxファイルが見つかりませんでした。感嘆符付きでソリューションエクスプローラーに表示されていました。私はそれを交換し、エラーは消えました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.