忽略嵌入式资源路由ASP.NET 4 WebForms

时间:2011-04-15 08:44:26

标签: asp.net routing webforms

我在asp.net 4 webforms中使用路由。我有一个主题dll,其中包含外观和感觉所需的所有图像,css和js文件。我只有1页动态加载页面中的控件。我使用路由来区分请求。定义了以下路线:

routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("Default-All-Pages", "Pages/{*OtherParams}", "~/Default.aspx", false);

已经定义了用于管理嵌入资源的处理程序。当应用程序凭借代码执行时,将请求重定向到default.aspx。然后继续加载css文件并再次将请求路由到default.aspx。

我希望它将css / jpg请求路由到虚拟路径处理程序而不是页面。我应该定义什么路由,以便default.aspx页面不会处理文件请求?

2 个答案:

答案 0 :(得分:1)

routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" }); 
routes.Ignore("{*allcss}", new { allcss = @".*\.css(/.*)?" }); 
routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" }); 
routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" }); 

这解决了我的问题。

答案 1 :(得分:0)

与忽略HttpHandlers的方式相同,您可以为css和jpg文件添加忽略规则:

routes.Ignore("{resource}.css/{*pathInfo}");
routes.Ignore("{resource}.jpg/{*pathInfo}");

这些将从路由表中排除,并由任何已注册的处理程序/模块/ ISAPI过滤器处理。