Как вернуть код состояния из IHttpControllerSelector? - PullRequest
0 голосов
/ 22 ноября 2018

https://docs.microsoft.com/en-us/previous-versions/aspnet/hh944864(v%3Dvs.118)

В настоящее время я реализую версии API.Когда предоставляется неверная версия, я хотел бы ответить кодом состояния 406. Как бы я сделал это с помощью метода SelectController IHttpControllerSelector?

В настоящее время мы думаем о создании какого-либо ErrorController и маршрутизации к нему, ноне уверены, есть ли альтернативы?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

В настоящее время создан контроллер ошибок, который обрабатывает исключение, направляя его с помощью:

var routeData = request.GetRouteData().Values;

routeData.Clear();
routeData["controller"] = "Error";
routeData["problemDetails"] = problemDetails;

return base.SelectController(request);

Это работает, но я не большой поклонник, оставив этот вопрос открытым некоторое время, если есть какие-то лучшиеальтернативы.

0 голосов
/ 22 ноября 2018

Создайте новый контроллер, который возвращает Http 406. Создайте HttpControlDescriptor и переопределите CreateController, чтобы создать новый контроллер.Реализация IHttpControllerSelector затем возвращает дескриптор элемента управления, который затем создает контроллер, который возвращает неверную версию.

...