HttpGetAttribute 名称 属性 不适用于路由
HttpGetAttribute name property not working for routing
我有一个名为 WeatherForecast 的 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 告诉我操作本身根本没有路由:
显示的URL是https://localhost:port/WeatherForecast
(服务操作可以通过那个消费URL,我用Postman测试)
但是对于设置了 Name
属性 的 HttpGet
属性,我希望它是 https://localhost:port/WeaterhForecast/获取天气预报
当我在操作方法上额外使用了Route
属性(Route("GetWeatherForecast")
),那么操作的路径如下:https://localhost:port/WeaterhForecast /获取天气预报
(现在确实可以通过 URL 访问服务操作)。
所以,问题是:为什么 HttpGet
属性的 Name
属性 没有按照文档承诺的那样执行?或者 HttpGetAttribute.Name
的真正用途是什么?
源代码是使用 .NET 6.0 和 VS 2022 制作的,项目类型 ASP.NET Core-Web-API。显示的代码来自项目模板自动创建的控制器。
我有一个名为 WeatherForecast 的 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 告诉我操作本身根本没有路由: 显示的URL是https://localhost:port/WeatherForecast (服务操作可以通过那个消费URL,我用Postman测试)
但是对于设置了 Name
属性 的 HttpGet
属性,我希望它是 https://localhost:port/WeaterhForecast/获取天气预报
当我在操作方法上额外使用了Route
属性(Route("GetWeatherForecast")
),那么操作的路径如下:https://localhost:port/WeaterhForecast /获取天气预报
(现在确实可以通过 URL 访问服务操作)。
所以,问题是:为什么 HttpGet
属性的 Name
属性 没有按照文档承诺的那样执行?或者 HttpGetAttribute.Name
的真正用途是什么?
源代码是使用 .NET 6.0 和 VS 2022 制作的,项目类型 ASP.NET Core-Web-API。显示的代码来自项目模板自动创建的控制器。