【发布时间】:2013-10-24 14:41:45
【问题描述】:
使用 IIS 的 Windows 2003 服务器中的 ASP.NET MVC4 应用程序在虚拟目录存储中并具有存储控制器,例如 url 可以是
http://mysite.com/store/Store/Details?product=C201S
这个应用程序也需要从 root 访问,因为
http://mysite.com/Store/Details?product=C201S
因为这个应用程序目录的副本已经创建并且默认的网络应用程序指向它。 但是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
);
}
【问题讨论】:
-
通过设置一个虚拟目录并在其中放置一个 Web 应用程序,您的 Web 应用程序的根目录就是虚拟目录:
http://my site.com/VIRTUAL_DIRECTORY/。所以没有碰撞。
标签: asp.net asp.net-mvc asp.net-mvc-4 iis asp.net-mvc-routing