首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法忽略ASHX路由

无法忽略ASHX路由
EN

Stack Overflow用户
提问于 2014-05-01 01:11:56
回答 1查看 1.5K关注 0票数 2

我有一个MVC web应用程序,它继承并成为Webform框架的一部分。webform框架的一部分输出几个ASHX处理程序。我不能用routes.clear()删除它们,因为那样会把它们一起删除。我仍然需要使用它们。

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

当页面呈现如下所示的Url.Action时-

代码语言:javascript
复制
<link href="/MyLayout/Handlers/LoginStyleHandler.ashx?
      action=Index&amp;controller=Styles" rel="stylesheet" type="text/css">

就试图忽略这条路线而言,这里就是我尝试过的。这些都不起作用。怎么回事?我可以做什么来保持ASHX路径从我的Url.Action HTML帮助器。

代码语言:javascript
复制
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端删除处理程序。

结论

我的问题的根源在于应用程序的web forms端。不出所料,在框架内部,MVC应用程序继承了一个路由引擎。因此,我在MVC中的路由被放在堆栈的底部,而Webform路由放在顶部。

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-02-18 01:48:35

尝试routes.Ignore而不是routes.IgnoreRoutes

我的一些处理程序映射到子目录,所以我使用regex,它必须是完全匹配,而不是部分匹配

代码语言:javascript
复制
routes.Ignore("{*legecy}", new { legecy = @".*\.(aspx|ashx|asmx|axd|svc)([/\?].*)?" });
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23394164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档