Использование ApiControllerAttribute без использования RouteAttribute - PullRequest
0 голосов
/ 29 октября 2018

В ASP.NET Core (v 2.1.5) вы можете создавать контроллеры, не наследуя их от класса Controller (как вы знаете). И если вы это сделаете, вы должны использовать RouteAttribute для определения ваших маршрутов. Но мне интересно, можем ли мы использовать неявную маршрутизацию (а не атрибутную маршрутизацию) вместе с атрибутом ApiController вместе. Пример: наличие этой неявной маршрутизации в Startup.cs:

app.UseMvc(routeBuilder => 
{
    routeBuilder.MapRoute("api_default", "{controller}/{action}/{id?}");
});

А это Cotroller

[ApiController]
public class ValuesController 
{
    [HttpGet] 
    public string Get(int id) => id.ToString();
}

Будет выбрасывать это исключение:

InvalidOperationException: действие TestApi.Controllers.ValuesController.Get не имеет атрибута маршрут. Методы действий на контроллерах с пометкой Атрибут ApiControllerAttribute должен быть маршрутизирован.

Есть ли способ избежать исключения?

1 Ответ

0 голосов
/ 29 октября 2018

Но мне интересно, можем ли мы использовать неявную маршрутизацию (а не атрибутную маршрутизацию) вместе с атрибутом ApiController.

Согласно официальной документации

Маршрутизация атрибутов становится обязательным требованием. Например:

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

Действия недоступны по обычным маршрутам, определенным в UseMvc или от UseMvcWithDefaultRoute в Startup.Configure.

Примечание: упорная мина

Ссылка Создание веб-API с помощью ASP.NET Core: требование маршрутизации атрибута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...