ASP.NET路由-如果路径存在,则GetRouteData不起作用

问题描述

|| 我有一个“ 0”,它会拦截所有请求并根据路由规则从数据库加载数据。但是,我一直都遇到一个问题。
GetRouteData
仅在路径不存在时起作用:
var routeData = RouteTable.Routes.GetRouteData(new HttpContextwrapper(HttpContext.Current));
假设有一个URL
http://localhost/contact
的请求,如果文件系统中不存在该路径,我将获得与该URL相关的正确路由数据。当我想通过在路径“ 4”中创建一个aspx页面自定义该URL处的页面时,会出现问题。一旦这样做,
GetRouteData
就返回
null
。 我什至尝试创建一个新的
HttpContext
对象,但是如果该页面存在,我仍然无法检索路线数据。 有没有人遇到过这个问题?有解决方案/解决方法吗? 所有帮助将不胜感激。     

解决方法

RouteCollection.RouteExistingFiles
设置为true。
public static void RegisterRoutes(RouteCollection routes)
{
    // Cause paths to be routed even if they exists physically
    routes.RouteExistingFiles = true;

    // Map routes
    routes.MapPageRoute(\"...\",\"...\",\"...\");
}
不过要当心。 IIS7的行为与在Visual Studio中调试时使用的服务器略有不同。当我将应用程序部署到Web时,我对此有所了解。查看我提交给Microsoft Connection的反馈。