使用ASP.NET MVC2,IIS 6没有转发空路由
-
26-09-2019 - |
题
首先,让我解释一下,我正在使用托管解决方案,而IIS 6的配置和设置方式我无能为力。
我的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,hxxp://mysite.com/contact.aspx.aspx.aspx
这些都是控制者,我也可以执行他们尊敬的行动。
问题是我无法正确执行空的URL(即HXXP://mysite.com/),它给我一个“目录列表拒绝”错误。
我遇到的问题是,default.aspx文件位于root(执行),我可以在不使用简单响应的情况下加载home Controller。
谢谢你,马修
解决方案
您获得的“目录列表被拒绝”的事实意味着ISAPI FILETR与MVC合作不匹配。
其他提示
您正在获得“拒绝目录列表”的事实意味着您没有默认文档,因此服务器正在尝试在根文件夹上显示文件列表。
将默认文档更新为“ default.aspx”之类的东西。您的托管提供商应该有一个选择。这很普遍。
您可以在IIS6和IIS7上禁用此行为
// Disable IIS looking at physical files and directories
RouteTable.Routes.RouteExistingFiles = true;
不隶属于 StackOverflow