ASP.NET MVC2を使用して、空のルートはIIS 6によって転送されていません
-
26-09-2019 - |
質問
まず、私はホストされたソリューションを使用していることを説明させてください。IIS6の構成と設定の方法でできることはあまりありません。
MVC2がある程度動作しています。次のGlobal.ASAXコードを使用しています。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Default", action = "Index", id = "" }
);
}
最初のルートでは、IIS 6が非ASPXコードを実行できないため(またはそのようなもの、本当に確信していない)、{Controller} .aspxを指定する必要がありました。
これは問題ありません。次の動作:hxxp://mysite.com/home.aspx、hxxp://mysite.com/projects.aspx://mysite.com/contact.aspx
これはすべてコントローラーであり、尊敬されるアクションも実行できます。
問題は、空のURLを適切に実行できないこと(つまり、hxxp://mysite.com/)で、「ディレクトリリストが拒否された」エラーを提供します。
私が持っている質問は、root(これが実行される)にあるデフォルト.aspxファイルを使用することです。簡単なResponse.redirectを使用せずにホームコントローラーをロードできますか?
マシュー、ありがとう
解決
「ディレクトリリストが拒否された」を取得しているという事実は、ISAPI FiletrがMVCとの作業と一致しないことを意味します。
他のヒント
「ディレクトリリストが拒否された」を取得しているという事実は、デフォルトのドキュメントがないため、サーバーがルートフォルダーにファイルのリストを表示しようとしていることを意味します。
デフォルトのドキュメントを「default.aspx」のようなものに更新します。ホスティングプロバイダーには、このためのオプションが必要です。これは非常に一般的です。
この動作は、IIS6とIIS7で無効にすることができます
// Disable IIS looking at physical files and directories
RouteTable.Routes.RouteExistingFiles = true;