わかりましたので、プロジェクトをローカル IIS にデプロイすると問題なく動作します。オンライン ホストにデプロイすると、ディレクトリ リストしか表示されません。
(
VisualStudio 2012、mvc3、.net 4.5 Publish to Web 設定を使用:
- 公開方法:FTP
- サーバ:
www."mysite".co.za
- サイト パス: "空白" (私の理解では、アプリ ディレクトリに直接公開しているため、ルートには bin、views、global.asax、web.config が含まれています)
- リンク先 URL:
http://www."mysite".co.za
- データベースはすでに稼働しており、web.config で構成されています
)
Views ディレクトリをクリックすると、404 エラーが発生します。
次に行ったのは、global.asax が実行されるかどうかを確認することだったので、RegisterRoutes で例外をスローするコードを追加しました (Application_Start() から呼び出されます)。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
throw new Exception("This is my custom error: Currently in RegisterRoutes");
}
そして本当のボブ、私は次のようになります(ただし、それでもビューディレクトリをクリックした場合のみ):
「/」アプリケーションでサーバー エラーが発生しました。
これは私のカスタム エラーです: 現在 RegisterRoutes にあります
説明:現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。 例外の詳細: System.Exception: これは私のカスタム エラーです: 現在 RegisterRoutes にあります
私の質問: 1. ルートが global.asax を取得しないのはなぜですか? 2. routes.MapRoute(...) の後でコードの実行が終了する場所を確認するにはどうすればよいですか? (つまり、 throw Exception を削除した後 ;) )
よろしく