我确信这很简单,但我觉得很奇怪。
在我的ASP.NET 4.0 Web窗体应用程序中,我在“Global.asax”文件中声明了以下代码。
<%@ Import Namespace="System.Web.Routing" %>
...
protected void Application_Start(object sender, EventArgs e) {
RegisterRoutes(RouteTable.Routes);
}
....
public static void RegisterRoutes(RouteCollection routes) {
routes.MapPageRoute("404", "{*url}", "~/Page-Not-Found.aspx");
routes.MapPageRoute("", "about", "~/Default.aspx");
}
我尝试了添加路由的顺序的不同变体,以及使用和不使用参数声明“about”的URL以及删除404路径的不同方式。
404重定向可以正常工作,重定向到“Page-Not-Found.aspx”。
Web.config包含以下内容
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
为什么“关于”规则不起作用的任何想法?当我尝试去它,或者我创建它的任何其他有效路线时,只需转到404页面。上面的404重定向路由工作正常(因为它显示主题页面)。但是,当我尝试浏览“关于”路径时,删除404路由只会呈现标准的.NET / IIS 404页面。
答案 0 :(得分:0)
我不是百分百肯定,但我认为你错过了一个“/”
我正在使用此重定向,它运行正常:
routes.MapPageRoute("productTour", "tour/", "~/ProductTour.aspx");
我认为路线的名称也不能为空。
在我们的案例中,地址为:http://www.oursite.com/tour
答案 1 :(得分:0)
不是最好的答案,也不确定为什么要解决它 - 但是,将网站发布到IIS 7服务器会使路由正常工作。
对于使用VS 2010的ASP.NET开发服务器版本,它一定是个问题。