我正在使用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!";
}
}
编辑:
我试图在我的机器上进行设置。当我从控制器中删除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。>>
您尝试过这个吗?