Получение 403 в приложении ASP.NET WebAPI при включении дополнительного сегмента в маршрут атрибута - PullRequest
0 голосов
/ 06 ноября 2018

В моем контроллере ASP.NET WebAPI следующие настройки маршрутизации работают правильно:

[Route("api/products")]
public class ProductsController : ApiController
{
    [HttpGet]
    public IHttpActionResult Get()
    {
        return Ok();
    }
}

Однако, когда я меняю маршрут на api/catalog/products, я получаю 403 ошибки при доступе к маршруту. Почему этот дополнительный сегмент вызывает ошибку 403 и как я могу ее исправить?

Вот мой конфиг:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
    }
}

1 Ответ

0 голосов
/ 22 февраля 2019

Сначала я бы предложил вам обновить атрибуты маршрутов, следуя предложенному формату

[RoutePrefix("api/products")]
public class ProductsController : ApiController {    
    //GET api/products
    [HttpGet]
    [Route("")] //(Default route)
    public IHttpActionResult Get() {
        return Ok();
    }
}

, использующий атрибут [RoutePrefix] на ApiController и добавляющий атрибут [Route] к действию.

Далее, 403 Forbidden обычно происходит, когда вы пытаетесь перейти к каталогу на сайте, где на веб-сайте не включена функция просмотра каталогов, а документ по умолчанию не настроен.

В этом случае у вас может быть фактическая папка, которая конфликтует с маршрутом по умолчанию для ProductsController.

при обновлении маршрута и попытке вызова api/catalog/products он попытается вернуть фактическое содержимое этой папки, что приведет к сбою, если функция не включена.

Либо удалите, либо переименуйте папку, чтобы она не конфликтовала ни с одним из маршрутов вашего контроллера.

Ссылка Маршрутизация атрибутов в ASP.NET Web API 2

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