ASP.NET路由处理程序获胜';t ASPX文件的触发器

本文关键字:ASPX 文件 触发器 路由 NET 处理 程序 获胜 ASP | 更新日期: 2023-09-27 18:00:25

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

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

在/customerservice.aspx中,我填充了这样一个文字:

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

当我导航到/customerservice.aspx时,我希望文本为"en",但我得到了一个null引用异常。在/en/customerservice.aspx上,它的行为正如我所期望的那样。

有没有一种方法可以为磁盘上存在的aspx文件运行路由?

编辑:

这样配置的路线:

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

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

谢谢!

ASP.NET路由处理程序获胜';t ASPX文件的触发器

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

routes.RouteExistingFiles = true;

搜索RouteExistingFiles以查找更多信息,如打开RouteExisting Files时的注意事项。