【问题标题】:Ignore embedded resources routing ASP.NET 4 WebForms忽略嵌入式资源路由 ASP.NET 4 WebForms
【发布时间】:2011-08-06 04:04:46
【问题描述】:

我在 asp.net 4 网络表单中使用路由。我有一个主题 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 请求路由到虚拟路径处理程序而不是页面。我应该定义什么路由,以便默认情况下不会处理文件请求。aspx页面?

【问题讨论】:

    标签: asp.net routing webforms


    【解决方案1】:

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

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

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

    【讨论】:

    • 你也试过了吗:routes.Add(new System.Web.Routing.Route("{resource}.css/{*pathInfo}", new System.Web.Routing.StopRoutingHandler()));?
    • 是的,我做了,似乎没有用。实际上,我截获了来自 global.asax 开始请求的请求,并且只要有对 webresources.axd 的请求,它就不会命中 aspx init。当有对 css 文件的请求时,它会点击 aspx 页面的 init。
    • 对不起,我不是要打死马,但我假设您在到内容处理程序 aspx 的路由之前添加了忽略规则?您可以在其中注册 css/图像处理程序的 web.config 部分包含吗?
    • 是的,我想我找到了解决方案,但实际上并没有解决我的问题。刚刚回答我的问题得到了来自haacked.com/archive/2008/07/14/…的链接
    • routes.Ignore("{allaspx}", new { allaspx = @".*\.aspx(/.)?" }); routes.Ignore("{allcss}", new { allcss = @".*\.css(/.)?" }); routes.Ignore("{alljpg}", new { alljpg = @".*\.jpg(/.)?" }); routes.Ignore("{alljs}", new { alljs = @".*\.js(/.)?" });这解决了我的问题。
    【解决方案2】:
    routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" }); 
    routes.Ignore("{*allcss}", new { allcss = @".*\.css(/.*)?" }); 
    routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" }); 
    routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" }); 
    

    这解决了我的问题。

    【讨论】:

    • 这也解决了当您在 .aspx 文件中有 Web 方法和包罗万象的路由时的问题。
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多