【问题标题】:URL routing not working with ASP.NET web forms?URL 路由不适用于 ASP.NET Web 表单?
【发布时间】:2011-09-28 06:59:13
【问题描述】:

我最近启动了一个 Web 应用程序,并决定在其中使用 url 路由(基本上只是为了练习一下)。

应用程序是 .NET4,我使用的是 VS2010 SP1 和 IIS Express(集成管道)。

问题是,当我运行应用程序时,只要路由 URL 中没有参数,路由就可以正常工作。如果有参数,那么我得到一个 404。

以下是 global.asax.cs 中的相关代码:

void RegisterRoutes(RouteCollection routes)
{
    routes.Clear();
    routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user_detail.aspx", false);
    routes.MapPageRoute("Users_Create", "users/create", "~/users/user-detail.aspx", false);    
}

void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

应用程序正在 VS 的 IIS Express 上运行。虚拟文件夹是 /cms。

如果我转到http://localhost:8888/cms/users/create,我会按预期看到我的页面。

如果我转到http://localhost:8888/cms/users/view/Matt,我会收到 404 错误(来自 ASP.NET 而不是来自 IIS,因此请求将进入 ASP.NET 管道)。

我尝试将以下内容添加到 web.config,但这没有任何区别:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

我尝试在 IIS Express 中更改为经典模式,但这并没有什么不同。也没有使用旧的 Cassini 而不是 IIS Express。

任何想法我做错了什么?

干杯,

马特

【问题讨论】:

    标签: c# asp.net visual-studio-2010 url-routing iis-express


    【解决方案1】:

    在非工作路径中的实际页面名称似乎有错字。您在这条路线中使用了page_detail.aspx,而在工作路线中,您使用了page-detail.aspx - 注意下划线与连字符。所以我相信修复它应该可以解决问题,即

    routes.MapPageRoute("Users_Edit", "users/view/{username}", "~/users/user-detail.aspx", false);
    

    【讨论】:

    • OMG(拍打额头)。昨天我整个下午都在用这个把头发扯下来,这只是一个错字盯着我的脸!我需要一个假期!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2013-09-20
    • 2019-04-08
    相关资源
    最近更新 更多