gpt4 book ai didi

asp.net-mvc - 无法忽略 ASHX 路线

转载 作者:行者123 更新时间:2023-12-02 21:27:04 31 4
gpt4 key购买 nike

我有一个 MVC Web 应用程序,它继承并是 Webform 框架的一部分。 Webform 框架的一部分输出多个 ASHX 处理程序。我无法用 routes.clear() 删除它,因为这会将它们全部删除。我仍然需要使用它们。

这就是我的问题所在,我有,<link href="@Url.Action("Index", "Styles")" rel="stylesheet" type="text/css" />这指向生成动态 CSS 样式属性的 Controller 。

当页面呈现Url.Action时看起来像这样 -

<link href="/MyLayout/Handlers/LoginStyleHandler.ashx?
action=Index&amp;controller=Styles" rel="stylesheet" type="text/css">

就试图忽略这条路线而言,我已经尝试过了。这些都不起作用。是什么赋予了?我该怎么做才能使 ASHX 路径远离我的 Url.Action HTML 帮助程序。

routes.IgnoreRoute("{Handlers}.ashx");
routes.IgnoreRoute("{Handlers}/{resource}.ashx/{*pathInfo}");
routes.IgnoreRoute("TMW_LayoutPrototype/Handlers/LoginStyleHandler.ashx");
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
routes.IgnoreRoute("Handlers/LoginStyleHandler.ashx");
routes.IgnoreRoute("{*allashx}", new { allashx = @".*\.ashx(/.*)?" });

更新

使用正则表达式测试器 http://regexpal.com/让我知道我的正则表达式模式 @".*\.ashx(/.*)?"已验证。但是,它不会从 Web 应用程序的 MVC 端删除处理程序。

结论

我的问题的根源在于应用程序的网络表单端。瞧,在 MVC 应用程序继承的框架内放置了一个路由引擎。因此,我在 MVC 中的路由被放置在堆栈的底部,而 Webform 路由则位于顶部。

忽略路由不起作用,因为路由是在 application_start 事件上创建的。忽略或将我的 MVC 路由放置在堆栈顶部是行不通的,因为那样我就会丢失 session 以及表单例份验证。

解决方案是在 Webform 路由代码中编写一个约束,以远离我的 MVC 应用程序。之后MVC王国一切都好。

最佳答案

尝试使用routes.Ignore而不是routes.IgnoreRoutes

我的一些处理程序映射到子目录,因此我使用了正则表达式,它必须是完全匹配而不是部分匹配

routes.Ignore("{*legecy}", new { legecy = @".*\.(aspx|ashx|asmx|axd|svc)([/\?].*)?" });

关于asp.net-mvc - 无法忽略 ASHX 路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394164/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com