我正在使用.NET Core 3.1创建API应用程序。 我想避免在每个
ApiController
和操作上设置路由属性。我尝试了许多组合来设置常规路由,但失败了。在某些配置下,我无法让API工作,在其他一些配置下,在启动期间会出现以下异常:
InvalidOperationException:操作“ApiIsWorking”没有属性路线。 使用ApiControllerAttribute注释的控制器上的操作方法必须具有属性路由。
如何将
startup.cs
设置为自动映射控制器与其类名以及操作与其方法名?谢谢!
一些代码:
startup.cs
...
services.AddControllers()
...
app.UseHttpsRedirection()
.UseRouting()
.UseAuthentication()
.UseEndpoints(endpoints => ?? )
.UseCoreHttpContext()
.UseServerConfiguration();
控制器.cs
[ApiController]
public class BaseAPI : ControllerBase
{
[HttpGet]
public string ApiIsWorking()
{
return "API is working!";
}
}
解决方案:
正如Reza Aghaei在解决方案中所说,错误是添加ApiController属性。当我删除它后,UseEndpoints命令开始工作。
我的错误是添加该属性以便识别哪些类应通过API公开。这是不必要的,因为UseEndpoints仅映射继承自ControllerBase的类。
注意事项:
2)我强调Zinov的回复关于.NET Core中传统路由与Swashbuckle的问题。
[ApiController]
属性,并在UseEndpoints
中设置路由。 - Reza Aghaei