我在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页面不会处理文件请求?
答案 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过滤器处理。