0

问候,

我正在使用 Visual Studio 2010 和 ASP.NET 4.0 构建一个 WebForms 项目,该项目使用 System.Web.Routing 中的新路由功能。当我构建我的解决方案并从 VS.NET 的调试环境中运行它时,只有包含“.aspx”扩展名的 RouteUrl 的路由被正确路由到 PhysicalFile。路由引擎似乎没有“检测到”对其他 URL 的请求以进行处理。在以下情况下,“Scenario1”显示 404,“Scenario2”正常工作。

我将非常感谢您提供的任何指导。

这是我的 global.asax 中的相关代码:

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup

    // Register Routes
    RegisterRoutes();
}

void RegisterRoutes()
{
    System.Web.Routing.RouteTable.Routes.MapPageRoute("Scenario1", "scenario1/{option1}", "~/About.aspx");  
    System.Web.Routing.RouteTable.Routes.MapPageRoute("Scenario2", "scenario2.aspx", "~/About.aspx");
}

感谢您抽出宝贵的时间。

时刻冲浪者

4

1 回答 1

1

阅读这篇文章后,我发现了我的问题:

Asp.Net System.Web.Routing 不会路由 URL,除非最后输入 .aspx

我的 VS2010 解决方案包含几个项目:web、业务层类、数据访问层类等。我的 web 项目被称为“SystemName.WebForms”。由于某些奇怪的原因,Web 项目名称中的句点会干扰 ASP.NET 4.0 的 WebForm 路由。一旦我将我的项目重命名为“SystemName_WebForms”,所有路由都可以正常工作。

网络项目名称中有句点:

  • 只有“scenario2”和“scenario4”工作

网络项目名称中没有句点:

  • 所有场景都有效

路线:

    RouteTable.Routes.MapPageRoute("scenario1", "scenario1/{option1}", "~/About.aspx");
    RouteTable.Routes.MapPageRoute("scenario2", "scenario2.aspx", "~/About.aspx");
    RouteTable.Routes.MapPageRoute("scenario3", "scenario3", "~/About.aspx");
    RouteTable.Routes.MapPageRoute("scenario4", "scenario4.xxx", "~/About.aspx");

非常感谢@vincentw56 找到并发布了他的问题的答案!

时刻冲浪者

于 2010-10-31T03:14:15.217 回答