2013-06-25 89 views
16

これはすでに何度も尋ねられた質問のようです。そうではありません。HTTPエラー403.14 - 禁止 - IIS Expressを使用したMVC 4

開発環境: VS 2012とMVC 4.私は、IIS Expressを使ってアプリケーションを実行しています。

このエラーは昨日まで発生していませんでした。それは突然起こり始め、私は立ち往生しています。その奇妙なことは、1つのシナリオでのみ発生します。

私はhttp://localhost:49962/managescholars/にアクセスしようとすると、それは誤り

HTTP Error 403.14 - Forbidden 
The Web server is configured to not list the contents of this directory. 

しかし、細かいhttp://localhost:49962/managescholars/Index作品を使用して私を示しています。同じコントローラの他のアクションメソッドも正常に動作します。 http://localhost:49962/managescholars/createなどです。他のコントローラはすべて正常に動作します。

私はweb.configに以下を追加しようとしました。

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <handlers/> 
</system.webServer> 

私はまた、管理者

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir 

として次のコマンドを実行しようとしている。しかし、それらのどれも働きました。

編集:

私は私のルートを変更しました。彼らは次のように見えます。

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "ManageScholarLectures", 
      url: "Manage/Lectures/{userFriendlyName}", 
      defaults: new { controller = MVC.ManageLectures.Name , 
          action = MVC.ManageLectures.ActionNames.Index, 
          userFriendlyName = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "ManageScholarEdit", 
      url: "Manage/Scholars/{userFriendlyName}", 
      defaults: new { controller = MVC.ManageScholars.Name, 
          action = MVC.ManageScholars.ActionNames.Edit } 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = MVC.Home.Name, 
          action = MVC.Home.ActionNames.Index, 
          id = UrlParameter.Optional } 
     ); 
    } 

私はT4MVCテンプレートを使用しています。

デフォルトルートを下にして最初の2つのルートを削除しても、それはまだ機能しません。私は何を間違えたのですか?

ご協力いただきありがとうございます。

+1

最近あなたのルートで何かを変更しましたか?それは私が見る最初の場所だろう。 –

+0

デフォルトでは、変更しない限り、インデックスページへのコントローラURLのデフォルト値は – Jonesopolis

+0

はいです。あなたが正しいです。最近私のルートを変更しました。私は自分の質問を編集し、RegisterRoutesメソッドを含めました – Aamir

答えて

56

あなたのルートは正常です。これにより問題は発生しません。エラーはhttp://localhost:49962/managescholars/でのみ発生します。つまり、同じ名前の他のリソースが存在する可能性があります。 あなたはあなたのコードが誤って実行中にフォルダmanagescholarsを作成していないことを確認することができますか?」

+2

ありがとうございました。これは確かに問題でした。私は誤ってファイルを保存し、フォルダを作成するコードを書いていました。これにより、問題を引き起こしていた「管理者」が作成されました。 – Aamir

+2

完璧な答えは、 "/製品"ルーティングと同じ問題があった、はい、私は物理的なフォルダと "製品"、削除されたフォルダとビンゴと呼ばれるコントローラを持っていた!どうもありがとう! – Nestor

+1

優秀、ありがとうございます。非常に良い点。 –

1

まず、私は

http://localhost:49962/managescholars/ 

が実際に

http://localhost:49962/manage/scholars/ 

であると仮定しています。ない場合は、あなたの問題があります:)

私は、ルート上の専門家ではないんだけど、ScholarsのためのあなたのルートにuserFriendlyName paramがhttp://localhost:49962/manage/scholars/があなたのルールのいずれとも一致せず、IISが扱うことを意味しているオプションではありませんフォルダの内容を一覧表示するように要求します。

0

を誰かが私が得た同じ問題を取得し、deseperatlyこのページを入力してください場合。 ウェブサイトをデバッグすることはなく、1つのウェブサイト上にない動作する場合:ルート設定がまだ存在する場合のglobal.asax チェックに

チェック修正...

私はそれがダムだ知っているが、Gitのマージ後6時間を失いました。 ..

0

私の知る限り、元の質問は答えられましたが、私の場合は下でした。 IIS Expressを使用してVS2013で全く同じ問題が発生しました。私の場合、visit/LoginはLoginControllerでIndexアクションを取得できませんでした。私がチェックしたときに物理的なフォルダはありませんでしたが、もっと掘り下げた後に、これを引き起こした/ LoginパスのIIS Expressに仮想ディレクトリが作成されていることがわかりました。問題を解決するために、applicationhost config(Documents \ IISExpress \ config)から仮想ディレクトリを削除しました。

1

同じ問題が発生しました。解決するのはとても簡単です。

この問題は、プロジェクトの設定で保護URLのプロパティを編集すると、IIS Expressの競合が原因で発生します。 この問題を解決するには、非常に簡単です。

1 - ".vs \ config"ディレクトリ内のファイル "applicationhost.config"を探します。このフォルダは、ソリューションのルートにあります。メモ帳を使用して開くことができます。++

2 - プログラムの「検索」(Ctrl + F)を使用して、コントロールの名前を検索します。私の場合、問題を引き起こしたコントロールは「オフィス」でした。

3 - このようなURLのIIS設定を行うノードを削除します。

<site name="G4.Admin(1)" id="8"> 
 
       <application path="/" applicationPool="Clr4IntegratedAppPool"> 
 
        <virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" /> 
 
        <virtualDirectory path="/Offices/Edit" physicalPath="C:\Projetos\PortalG4\src" /> 
 
        <virtualDirectory path="/Offices" physicalPath="C:\Projetos\PortalG4" /> 
 
       </application> 
 
       <application path="/Offices/Edit/2" applicationPool="Clr4IntegratedAppPool"> 
 
        <virtualDirectory path="/" physicalPath="C:\Projetos\PortalG4\src\G4.Admin" /> 
 
       </application> 
 
       <bindings> 
 
        <binding protocol="http" bindingInformation="*:6920:localhost" /> 
 
       </bindings> 
 
      </site>

あなたはすべての要素

<site name = "NAME_PROJECT" id = "X"> 
を削除する必要があります:以下の例を参照してください変更を行う前に、ファイルのバックアップを作成します。

ハグ

+0

修正!これはほとんどの場合起こっていることであり、そのために禁止されたエラーが発生します。 –

0

私の場合、間違ったURLで実行するようにアプリケーションを設定していたためでしたが、正しいものに戻ったときにlookがapplicationhost.configを圧倒しませんでした。

私が上記のように、私はそれらのステップを解決することしかできませんでした。私の場合は

+0

新しい回答を作成する代わりに、あなたの他の回答を編集して追加することができます。 –

0

、Visual Studioの2015年に、私は次の手順で問題解決:

  • 停止IIS Expressの
  • 閉じるのVisual Studio
  • は{私のソリューションディレクトリ内のファイルのapplicationHost.configを削除します。 } .vs \ CONFIG
  • 削除ディレクトリドキュメント\ IISExpress \ CONFIG
  • スタートVS、F5と:)
を楽しみます
関連する問題