IIS を使用する Windows 2003 サーバーの ASP.NET MVC4 アプリケーションは、仮想ディレクトリ ストアにあり、ストア コントローラーを持ちます。
http://mysite.com/store/Store/Details?product=C201S
このアプリケーションはルートからもアクセスする必要があります。
http://mysite.com/Store/Details?product=C201S
このため、アプリケーション ディレクトリのコピーが作成され、デフォルトの Web アプリケーションがそれを指しています。ただし、 http://mysite.com/Store/Details?product=C201Sはエラーを返します
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /Store/Details
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272
URL に Store コントローラーが含まれていないリンクは正常に機能します。ストア アプリケーションとストア コントローラーの名前が衝突しているようです。これを修正するには?
global.asax.cs には、既定の丸めが含まれています。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//http://haacked.com/archive/2010/02/12/asp-net-mvc-2-optional-url-parameters.aspx
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}