WebAPI возвращает другой результат в режиме отладки по сравнению с выпуском - PullRequest
0 голосов
/ 30 октября 2019

У меня есть WebAPI, где я получаю данные на основе уникального идентификатора

Например,


    [RoutePrefix("test/api/")]
    public class ObjectController : ApiController
    {
        [HttpGet]
        [Route("objects/{identification}")]
        public HttpResponseMessage Objects(string identification)
        {
            ....
        }
    }

Я создаю этот код в Visual Studio 2019 и размещаю его через IIS. API отлично работает, когда я отправляю запрос через почтальона или что-то похожее на конечную точку: https://localhost/test/api/objects/123456. Пока все хорошо.

Если я, например, создаю этот код в режиме отладки и отправляю запрос наhttps://localhost/test/api/objects/123456%20, который содержит закодированное пространство, он вернет HTML-страницу с текстом «Ресурс не найден». как сообщение и со статусом Http 404 NotFound. Это то, чего я ожидал, но если я соберу свой код в режиме выпуска, то по какой-то причине получу другой результат.

Результат будет таким:

404 not found

{
   "objectIdentification": "123456"
}

Как вы можете видеть, Я получаю результат, где 404 не найден является частью моего ответа, где мой результат фактически возвращается мне. Мой код состояния также теперь 200 ОК.

Что может быть причиной такого поведения?

1 Ответ

0 голосов
/ 31 октября 2019

Итак, после еще нескольких копаний мы пришли к интересному повороту в этой проблеме. У нас все еще есть некоторые контроллеры MVC в нашем программном обеспечении, в основном из-за устаревшего, которое мы постепенно удаляем и заменяем более новыми, и оказывается, что одна из обработок ошибок маршрутизации MVC, кажется, смешивается с маршрутизацией ASP NET Web API, которая вызываетэто странное явление.

Поскольку теперь мы знаем причину, мы можем ее исправить. Я принимаю этот ответ, чтобы другие в будущем с аналогичным случаем могли использовать его в качестве справочного материала.

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