【问题标题】:ASP.NET Routes Handler Won't Trigger for ASPX fileASP.NET 路由处理程序不会触发 ASPX 文件
【发布时间】:2014-04-27 00:43:36
【问题描述】:

假设我有一个这样定义的路线:

routes.MapPageRoute(""
                    , "{language}/customerservice.aspx"
                    , "~/customerservice.aspx"
                    , false
                    , new RouteValueDictionary { {"language", "en"} });

在 /customerservice.aspx 中我填充了这样的文字:

lit_test.Text = RouteData.Values["language"].ToString();

当我导航到 /customerservice.aspx 时,我希望文字文本为“en”,但我得到一个空引用异常。在 /en/customerservice.aspx 它的行为与我预期的一样。

有没有办法为磁盘上存在的 aspx 文件运行路由?

编辑:

这样配置的路由:

routes.RouteExistingFiles = true;

routes.MapPageRoute(""
                    , "customerservice.aspx"
                    , "~/customerservice.aspx"
                    , false
                    , new RouteValueDictionary { { "language", "en" } });

将导致文字被填充“en”,但是第一个带有可选语言参数的场景仍然失败,RouteExistingFiles 标志设置为 true。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    使用RouteExistingFiles 属性强制所有请求(即使是磁盘上存在的文件)都通过路由。

    routes.RouteExistingFiles = true;
    

    搜索RouteExistingFiles 以查找更多信息,例如Considerations when turning on RouteExistingFiles

    【讨论】:

    • 当我在路由中不包含可选的 {language} 参数时,该设置将使路由为 aspx 文件运行,但当我包含可选参数时,它仍然会表现出相同的行为。
    • @user1276017 - 不知道。我会为“/customerservice.aspx”添加明确的路线,看看它是否有帮助 - 至少它会澄清哪些部分不起作用。
    • 我更新了问题,对我的第一条评论进行了更多澄清。
    猜你喜欢
    • 2019-02-27
    • 2017-05-13
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多