トップ回答者
IIS で、MVCアプリ設定で「Web サーバーは、このディレクトリの内容の一覧を表示しないように構成されています」が出ます

質問
-
お世話になります。
Webアプリ、MVC(VS2015)で作成しレンタルサーバーに設置、IISの設定で質問です。
アドレスを叩くと、
「HTTP エラー 403.14 - Forbidden
Web サーバーは、このディレクトリの内容の一覧を表示しないように構成されています。」がでます。
このアプリは、
root─AAA(プロジェクトA)
│
└BBB(プロジェクトB)のようにサーバー上に配置され https://www.abc.com/ で呼び出されるのは、AAAのプロジェクトです。
ここは問題なく動作しています。
ここに、BBBにもう1つのプロジェクトを配置したく今回行っています。
IIS上で左ペインのAAA配下のBBBフォルダー右クリックで「アプリケーションへ変換」を行っています。
「既定のドキュメント」は、継承です。
「要求フィルター」は、ファイル名拡張子で、.cshtmlと.cshtm のみが、Trueです。非表示セグメントはデフォルトのまま触らず。上記エラーメッセージが出ていますので Web.config は読み込まれているものと考えます。
(このエラーが出るまでWeb.config の記述に関するエラーが出ていた為)上記以外で確認したこと、
・https://www.abc.com/BBB/index.cshtml と無理やり動かそうとした。
「この種類のページは処理できません。
説明: 要求されたページの種類は、明示的に禁止されるため処理されません。拡張子 '.cshtml' が正しくない可能性があります。 下の URL が正しく入力されていることを確認してください。」→ まあ、当然といえば当然のメッセージ。
このメッセージから、IISの設定かWeb.Configの設定で何か不足し呼び出せないと推測するも「何か」がわからず身動き取れません。・フォルダー配下に、Views-Home-Index.cshtml はあります。
ファイルのコピーは、FTP接続ですべてのファイル・ディレクトリーを単純コピーしました。
開発環境 VS2015 C# MVC(多分5.0)
動作環境 Windows Server 2016 Datacenter
回答
-
> 上記でいう、AAA は、Report で、BBB は、SL になります。
そうだとすると質問者さんが上に書いたルーティングの設定、
> url: "AAA/BBB/{controller}/{action}/{id}",
・・・は明らかに間違ってます。
https://www.abc.com/BBB/ を呼んだのですよね。とすると、マッチしなくて、BBB フォルダ直下の既定のファイルを探して、無かったのでファイル一覧を表示しようとしたが、それは許可されてないので 403.14 エラーになったということに間違いなさそうです。
テンプレートでプロジェクトを作るとデフォルトで生成される、namespace ProjectName { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
をそのまま使えば良いはずです。試してみてください。
ちなみに、開発環境ですが以下のようにアプリケーション名 (myapplication) を設定しても、
デフォルトのルーティング設定のままでちゃんと Home/Index が表示されます。
- 回答としてマーク ferret001 2019年11月20日 3:32
すべての返信
-
> 上記でいう、AAA は、Report で、BBB は、SL になります。
そうだとすると質問者さんが上に書いたルーティングの設定、
> url: "AAA/BBB/{controller}/{action}/{id}",
・・・は明らかに間違ってます。
https://www.abc.com/BBB/ を呼んだのですよね。とすると、マッチしなくて、BBB フォルダ直下の既定のファイルを探して、無かったのでファイル一覧を表示しようとしたが、それは許可されてないので 403.14 エラーになったということに間違いなさそうです。
テンプレートでプロジェクトを作るとデフォルトで生成される、namespace ProjectName { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
をそのまま使えば良いはずです。試してみてください。
ちなみに、開発環境ですが以下のようにアプリケーション名 (myapplication) を設定しても、
デフォルトのルーティング設定のままでちゃんと Home/Index が表示されます。
- 回答としてマーク ferret001 2019年11月20日 3:32