21

これは、すでに何度も質問/回答されている質問のようです。そうではありません。

開発環境: 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 つのルートを削除しても、まだ機能しません。私は何を間違えましたか?

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

4

9 に答える 9

67

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

于 2013-06-27T07:00:46.133 に答える
1

まず、私はそれを仮定しています

 http://localhost:49962/managescholars/

実際には

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

. そうでない場合は、問題があります:)

私はルートの専門家ではありませんが、ルートでScholarsuserFriendlyNameparam はオプションではありません。つまり、http://localhost:49962/manage/scholars/どのルールにも一致せず、IIS はそれをフォルダーのコンテンツを一覧表示する要求として扱います。

于 2013-06-26T15:22:39.590 に答える
1

偉大な !!私の場合は、間違った URL で実行するようにアプリケーションを構成したことが原因でしたが、正しい URL に戻ったときに、その外観が applicationhost.config を圧迫することはありませんでした。

上で言ったように、私はそれらのステップを解決することができただけです。

于 2017-04-28T20:30:48.767 に答える