【问题标题】:ASP.NET Web Forms Routing returns 404ASP.NET Web 窗体路由返回 404
【发布时间】:2014-05-06 04:45:27
【问题描述】:

我确定这是我忽略的一些简单的事情——但它看起来很奇怪。

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

【问题讨论】:

  • 我想我应该补充一点,我正在使用 Visual Studio 2010 进行开发,并使用它启动的 ASP.NET 开发服务器直接从 VS 进行测试,运行 ASP.NET 版本 4.0.30319.18408

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


【解决方案1】:

我不是 100% 确定,但我认为您缺少“/”

我正在使用这个重定向,它工作正常:

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

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

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

【讨论】:

  • 试一试,不幸的是没有运气。尝试添加结尾“/”并尝试为其命名。我也只是尝试为“corporate”创建一个文件夹结构并创建一个“corporate/about”路由,但没有运气。
  • 您有任何错误信息吗?还是页面无法加载?
  • 请注意!如果您已经有一个名为“about”的文件夹,则该路由将不起作用,将调用此文件夹的实际默认值(或索引)
  • 这是一个 404 错误。我的重定向实际上工作得很好,这很奇怪。这是唯一有效的路线。当我尝试转到我为其创建路由的“友好”URL 时,禁用该路由只会呈现标准 .NET/IIS 404 错误。
  • 我真的不确定,但是如果您禁用 404 重定向,其他路由是否有效?我认为您将所有请求重定向到您的 404 路由。
【解决方案2】:

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

应该是 VS 2010 的 ASP.NET 开发服务器版本有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2021-02-01
    • 2013-10-04
    • 2011-03-13
    • 2010-09-15
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多