HttpGetAttribute 名称属性不适用于路由

2024-01-08

我有一个名为的 WebAPI 控制器天气预报只需一次操作。操作方法如下:

[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
    return Enumerable.Range(1, 5).Select(index => new WeatherForecast
    {
        Date = DateTime.Now.AddDays(index),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = Summaries[Random.Shared.Next(Summaries.Length)]
    })
    .ToArray();
}

但是,那HttpGet.Name = "GetWeatherForecast"应该定义一个路线名称“GetWeatherForecast”,因为我理解的目的Name该属性的属性。

但 Swagger 向我展示了操作本身根本没有路径: 显示的网址是https://localhost:端口/WeatherForecast(通过该URL即可消费服务操作,我使用Postman进行测试)

但随着HttpGet属性与Name属性集,我希望它是 https://localhost:port/WeatherhForecast/获取天气预报

当我另外使用Route属性 (Route("GetWeatherForecast"))在操作方法上,那么操作的路由如下所示:https://localhost:port/WeatherhForecast/获取天气预报(现在确实可以通过该 URL 访问服务操作)。

所以,问题是:为什么Name的财产HttpGet属性没有做什么文档承诺的?或者什么是HttpGetAttribute.Name真的是为了?

源代码是使用 .NET 6.0 和 VS 2022 编写的,项目类型为 ASP.NET Core-Web-API。显示的代码来自通过项目模板自动创建的控制器。


您使用的方式HttpGet属性:

[HttpGet(Name = "GetWeatherForecast")]

意味着您正在指定Name https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.routing.httpmethodattribute.name?view=aspnetcore-6.0#microsoft-aspnetcore-mvc-routing-httpmethodattribute-name属性不会更改路由 URL 的生成方式。路由名称可用于使用特定路由生成链接,而不是依赖于基于给定路由值集的路由选择。

相反,您应该指定Template https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.routing.httpmethodattribute.template?view=aspnetcore-6.0#microsoft-aspnetcore-mvc-routing-httpmethodattribute-template属性,通过排除命名参数或使用正确的名称:

[HttpGet("GetWeatherForecast")]

Or:

[HttpGet(Template = "GetWeatherForecast")]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpGetAttribute 名称属性不适用于路由 的相关文章

随机推荐

  • 向 Javacard 发送扩展 APDU

    我有一个 ACR38 智能卡读卡器和一些符合 GP 规范 02 的 Javacard 2 1 1 据我所知 有两种APDU 短APDU APDU 与LC or and LE比 短255 and 扩展APDU APDU 与LC or and
  • Haskell 中标识符中的撇号

    我在互联网上找到了这段代码片段 digits 0 0 digits n digits n where digits 0 ds ds digits n ds let q r quotRem n 10 in digits q r ds sumO
  • 如何解析 Facebook 数据

    我在正确解析 Facebook 数据时遇到一些问题 我正在努力实现应用程序的一部分 以允许用户在应用程序中选择和使用他们自己的 Facebook 照片之一 我已经让 Facebook 登录 注销代码正常工作 并且我目前正在获取令牌 登录后
  • 如何缩进预处理器语句?

    当有许多预处理器语句和许多 ifdef 级联时 很难获得概览 因为它们通常不缩进 例如 ifdef WIN32 include
  • Firebase Analytics 究竟如何处理会话持续时间/超时?

    我第一次使用 Firebase Analytics 在 Android iOS 应用程序中实现一些基本的使用情况统计信息 但文档对我来说对于如何准确计算会话持续时间 会话如何超时以及 24 小时似乎有点模糊观察结果的周期无助于通过试错来理解
  • 如何处理速度慢的 SecureRandom 生成器?

    如果你想要 Java 中的加密强随机数 你可以使用SecureRandom 很遗憾 SecureRandom可能会很慢 如果它使用 dev random在 Linux 上 它可以阻止等待足够的熵建立 如何避免性能损失 有谁用过吗不常见的数学
  • 如何有条件地编译更新的 Indy 功能?

    我已经找到了这个答案 https stackoverflow com a 14422904 988445关于如何在运行时检查 Indy 版本 有多种不同的方法 不过 我正在寻找如何使用条件在编译时检查 Indy 版本 新版本的 Indy 中
  • 如何使用范围编写高效的嵌套循环

    作为一个 Scala 新手 我尝试编写一个运行一些二维数据的方法 该方法被多次调用 因此性能很重要 首先我将其编码为便于理解 private def sumWithRange xEnd Int yEnd Int var sum 0 for
  • 传输到 PostgreSQL 后出现“关系不存在”错误

    我已将我的项目从 MySQL 转移到 PostgreSQL 并尝试删除该列作为上一问题的结果 因为在我从 models py 中删除有问题的列并保存之后 错误甚至没有消失 从 MySQL 传输到 PostgreSQL 时出现整数错误 htt
  • 使用 PHP 基于 HTML Web 表单选择在 Unix Box 上创建 DOC 文件

    我有一个 HTML 文件 其中包含一个包含多个问题的网络表单 这些问题的答案是 是 否 如果问题的答案是 是 我希望将预定义的 每个问题 文本部分写入服务器上的 DOC 文件 但只有在按下提交按钮之后 这样 如果用户改变主意并将答案从 是
  • VBA 选择数据透视表

    我正在尝试使用 VBA 选择数据透视表 并且遇到了一个问题 数据透视表可能从 A3 如果没有激活报告过滤器 或 A6 如果已选择 3 个报告过滤器 等开始 因此 数据透视表表并不总是位于工作表上的同一点 清除数据透视表只会删除所有数据和报表
  • 如何获取应用程序拥有的所有打开的图形页面?

    我正在尝试获取应用程序拥有的所有打开的图形页面 我尝试了这个查询 但它返回了一个空数据集 我想用应用程序 ID 来尝试这个 想知道是否有办法做到这一点 https graph facebook com fql q SELECT https
  • PyPlot - 使用选择器选择的突出显示点

    我正在使用绘制时间序列pyplot并希望在选择一个点后突出显示该点 使用pick event 发现类似问题here https stackoverflow com questions 22355435 how to pick a point
  • FFMpeg: CFLAGS=-D__STDC_CONSTANT_MACROS ./configure 在哪里?

    在 Ubuntu 下运行的 Eclipse 使用 ffmpeg 库时 我遇到了这个问题 UINT64 C 未在此范围内声明 一段时间后 我找到了这个解决方案 http code google com p ffmpegsource issue
  • 如何向 RESTful Web API GET 方法传递/接收多个参数?

    采用参数 返回标量值而不是数据集 的 GET RESTful 方法的常见示例如下所示 public string Get int id get and return the value 其中传递的 val 通常是一个 ID 因此您可以使用它
  • 如何仅在表单有效时才触发 jQuery 函数

    我有一个与提交按钮绑定的 jQuery 函数 如下所示 function signupform submit function alert test 但是 无论表单是否有效 它都会触发 我的模型用各种 DataAnnotations 装饰
  • WSO2签名系统服务应用程序

    我想将我的所有设备设置为 COPE WSO2 EMM 设置已完成并且工作正常 剩下的就是使用固件密钥对系统服务应用程序进行签名 我仅使用 Google 设备 Android 设备 摩托罗拉 G2 从那里我可以找到用于签署应用程序的密钥和密码
  • 是否可以轻松地从 Windows 迁移到 Linux Azure 应用服务?

    正如我所见 我需要创建新的 Linux 应用服务 创建域 证书绑定和部署管道 然后把旧的拆掉 这是更简单的方法吗 正如 Jim Xu 提到的 目前不可能将 WebApp 从基于 Windows 的移动到 Linux 您可能需要重新部署应用程
  • Ruby 和 Java 一样跨平台吗?

    您可以编译Java应用程序并在Java虚拟机所在的任何机器上运行它 而与底层硬件无关 Since 红宝石 on Rails http en wikipedia org wiki Ruby on Rails是基于 Ruby 构建的 我担心在任
  • HttpGetAttribute 名称属性不适用于路由

    我有一个名为的 WebAPI 控制器天气预报只需一次操作 操作方法如下 HttpGet Name GetWeatherForecast public IEnumerable