【问题标题】:Net 6 API Controller Routing - Case Sensitive behaviorNet 6 API 控制器路由 - 区分大小写的行为
【发布时间】:2022-07-22 05:58:18
【问题描述】:

我有以下 API 控制器

[ApiController] [Route("api/[controller]")]

public class SubContractsController: ControllerBase
{
    private readonly ISubContractsRepository subContractsRepository;

    public SubContractsController(ISubContractsRepository subContractsRepository)
    {
        this.subContractsRepository = subContractsRepository;
    }
    [HttpGet]
   
    public  async Task  <ActionResult<IEnumerable<SubContract>>> GetSubContracts()
    {
        try....

我没有得到 https://localhost:7059/api/subcontracts (全小写)的结果,因为下面的三个 URL 都给了我想要的结果。请注意,以下网址中 S 和 C 的大小写不同。

https://localhost:7059/api/Subcontracts https://localhost:7059/api/subContracts https://localhost:7059/api/SubContracts

路线是否区分大小写,如果是,为什么它适用于除一个之外的所有组合? 如何禁用区分大小写的特性?

【问题讨论】:

  • 路由不区分大小写。
  • 您的所有小写路线都有拼写错误吗?因为Text matching is case-insensitive and based on the decoded representation of the URL's path.

标签: asp.net-core routes asp.net-apicontroller


【解决方案1】:

文本匹配不区分大小写,并且基于解码的 URL 路径的表示形式。

阅读this,了解更多路线。

我没有得到 https://localhost:7059/api/subcontracts 的结果(完整 小写)

再试一次,可能有问题。我可以使用小写和所有大小写。

结果:

【讨论】:

  • @Quing 感谢您的回复。我简直不敢相信我的眼睛。它现在正在工作!我什至没有输入 URL,而是使用了历史记录,因此我昨天不太可能打错字。奇怪!。
  • 问题再次出现,我发现问题出在浏览器缓存上。在某些时候,当我进行更改时,如果页面没有正确呈现,即使在更正了代码库之后,现金也会为同一页面提供服务。
【解决方案2】:

我想确认我自己已经看到并解决了这个问题。是真的。为了验证,我使用 InPrivate 浏览器打开,并且 API 按预期工作。这不是代码或 .NET,而是浏览器。我想确认一下,以便人们知道解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2015-06-06
    • 1970-01-01
    • 2016-11-24
    • 2014-03-10
    • 1970-01-01
    • 2012-10-12
    • 2020-01-26
    相关资源
    最近更新 更多