C# ASP.NET路由-如何响应.aspx请求的404

C# ASP.NET路由-如何响应.aspx请求的404,c#,asp.net,asp.net-routing,C#,Asp.net,Asp.net Routing,我在webforms中使用路由来清理URL。我将所有.aspx文件存储在/Pages目录中,并使用干净的URL路由到它们。目前,我仍然可以通过导航到/Pages/Home.aspx来访问这些文件。如何抛出404或重定向到路由表中的其他页面?以下是我尝试过的: routes.RouteExistingFiles = true; routes.Ignore("{resource}.aspx/{*pathInfo}"); routes.Ignore(@"*\.aspx"); routes.MapPa

我在webforms中使用路由来清理URL。我将所有.aspx文件存储在/Pages目录中,并使用干净的URL路由到它们。目前,我仍然可以通过导航到/Pages/Home.aspx来访问这些文件。如何抛出404或重定向到路由表中的其他页面?以下是我尝试过的:

routes.RouteExistingFiles = true;
routes.Ignore("{resource}.aspx/{*pathInfo}");
routes.Ignore(@"*\.aspx");

routes.MapPageRoute("Home", "", "~/Pages/Home.aspx");
这根本不起作用,我需要一些建议

如果我尝试访问MVC站点上的物理文件,我会得到以下结果:

对象引用未设置为对象的实例

我可以在网络表单上这样做吗

routes.RouteExistingFiles = true;
routes.MapPageRoute("Route1", "Pages/{page}.aspx", "~/404.aspx");
routes.MapPageRoute("Route2", "Pages/{folder}/{page}.aspx", "~/404.aspx");

您需要将路由映射到抛出404而不是响应的页面,而不是忽略路由。希望这对其他人有帮助

我从文件中得到这句话。该行允许在磁盘上已经存在的文件上进行路由。默认为false,允许在URL正确时直接访问文件。在试图禁止文件访问的过程中,我将其设置为true,以便路由过程可以处理所有传入的请求。我没有改变任何东西,但我把它留在了代码里。对不起-你说得对-这与我记忆的相反。需要亲自阅读文档:)。我相信这个问题比忽略(@“*\.aspx”)-您明确请求不要路由所有
aspx
文件。您还需要一些与“pages/{name}.aspx”URL(您的404报告应该在这里)匹配的路由,该行实际上是关键的。我删除它是因为你以前的评论,我正在研究你建议的最后一部分,这很有道理,但不起作用。又加了一行,答对了!