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

前端之家收集整理的这篇文章主要介绍了ASP.NET路由:令牌之间的字面子段和来自文字子段的字符的路由值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我问的原因是因为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参数中减去下划线前缀.如果你喜欢,你甚至可以写一个动作过滤器来为你做这个.抱歉给你带来不便.

原文链接:https://www.f2er.com/aspnet/249511.html

猜你在找的asp.Net相关文章