ASP.NET Web窗体路由返回404

时间:2014-05-06 04:45:28

标签: c# asp.net asp.net-mvc-routing

我确信这很简单,但我觉得很奇怪。

在我的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页面。

2 个答案:

答案 0 :(得分:0)

我不是百分百肯定,但我认为你错过了一个“/”

我正在使用此重定向,它运行正常:

routes.MapPageRoute("productTour", "tour/", "~/ProductTour.aspx");

我认为路线的名称也不能为空。

在我们的案例中,地址为:http://www.oursite.com/tour

答案 1 :(得分:0)

不是最好的答案,也不确定为什么要解决它 - 但是,将网站发布到IIS 7服务器会使路由正常工作。

对于使用VS 2010的ASP.NET开发服务器版本,它一定是个问题。