加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET路由:令牌之间的字面子段和来自文字子段的字符的路由值

发布时间:2020-12-15 22:43:59 所属栏目:asp.Net 来源:网络整理
导读:我问的原因是因为IIS保护某些ASP.NET文件夹,如Bin,App_Data,App_Code等.即使URL不映射到实际的文件系统文件夹IIS也拒绝一个URL,其路径段等于提到的名字. 这意味着我不能有这样的路线: {controller}/{action}/{id} …其中id可以是任何字符串,例如 Catalog/Pr
我问的原因是因为IIS保护某些ASP.NET文件夹,如Bin,App_Data,App_Code等.即使URL不映射到实际的文件系统文件夹IIS也拒绝一个URL,其路径段等于提到的名字.

这意味着我不能有这样的路线:

{controller}/{action}/{id}

…其中id可以是任何字符串,例如

Catalog/Product/Bin

所以,而不是禁用这个安全措施,我愿意改变路由,使用id之前的后缀,像这样:

{controller}/{action}_{id} // e.g. Catalog/Product_Bin
{controller}/{action}/_{id} // e.g. Catalog/Product/_Bin

但是如果id包含新的分米,则这些路由将不起作用,在这种情况下,例如,

// These URL won't work (I get 404 response)
Catalog/Product_Bin_
Catalog/Product/_Bin_
Catalog/Product/__Bin

为什么?我不知道,看起来像一个bug给我.我如何使这些路由工作,其中id可以是任何字符串?

解决方法

好的,我有一个明确的答案.是的,这是一个bug.然而,在这一点上,我很遗憾地说,我们没有计划解决它有几个原因:

>这是一个突破性的变化,可能很难注意到这一点.
>有一个简单的解决方法.

您可以做的是将URL更改为不具有下划线:

{controller}/{action}/_{id}

然后添加一个路由约束,要求ID参数以下划线字符开始.

然后在您的操作方法中,从id参数中减去下划线前缀.如果你喜欢,你甚至可以写一个动作过滤器来为你做这个.抱歉给你带来不便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读