gpt4 book ai didi

ASP.NET 路由 : Literal sub-segment between tokens, 并使用文字子段中的字符路由值

转载 作者:行者123 更新时间:2023-12-04 01:08:45 25 4
gpt4 key购买 nike

我问的原因是因为 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

为什么?我不知道,对我来说看起来像一个错误。如何使这些路由起作用,其中 id 可以是任何字符串?

最佳答案

好的,我有一个明确的答案。是的,这是一个错误。但是,在这一点上,我很遗憾地说我们没有计划修复它,原因有两个:

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

  • 您可以做的是将 URL 更改为不包含下划线:
    {controller}/{action}/_{id}

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

    然后在您的操作方法中,您从 id 参数中删除下划线前缀。如果您愿意,您甚至可以编写一个 Action 过滤器来为您执行此操作。带来不便敬请谅解。

    关于ASP.NET 路由 : Literal sub-segment between tokens, 并使用文字子段中的字符路由值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318373/

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