C#NET Core 3 API中的RouteAttribute和UseEndpoints

问题描述 投票:1回答:2

我正在使用NET Core 3.1创建API应用程序。我想避免在每个ApiControllers和Actions上设置route属性。我在UseEndpoints上尝试了很多组合以设置常规路线,但是我失败了。

如何设置startup.cs以使用其类名自动映射控制器,并使用其方法名来设置Action?

谢谢!

startup.cs

...
services.AddControllers()
...

app.UseHttpsRedirection()
   .UseRouting()
   .UseAuthentication()
   .UseEndpoints(endpoints => ?? )
   .UseCoreHttpContext()
   .UseServerConfiguration();

controller.cs

[ApiController]
public class BaseAPI : ControllerBase 
{
        [HttpGet]
        public string ApiIsWorking()
        {
            return "API is working!";
        }
}
c# asp.net-apicontroller asp.net-core-3.1
2个回答
1
投票

编辑:

我试图在我的机器上进行设置。当我从控制器中删除Route属性时,出现以下错误:

InvalidOperationException:操作'WebAPISample.Controllers.WeatherForecastController.Index(WebAPISample)'没有属性路由。 动作方法用ApiControllerAttribute注释的控制器必须是attribute路由

错误消息本身说,API控制器必须使用属性路由。

我知道这不能回答您的问题,但是对于.NET Core 3 API,这似乎是不可能的。

从文档:

[ApiController]属性使属性路由成为必需。例如:

[Route("api/[controller]")] 
[ApiController] 
public class ValuesController : ControllerBase

无法通过UseMvc定义的常规路线访问动作,或UseMvcWithDefaultRoute中的Startup.Configure

请参阅MSDN上的this page。>>


0
投票

您尝试过这个吗?

© www.soinside.com 2019 - 2024. All rights reserved.