Я создал пользовательский объект, который я использую для генерации ответа об ошибке json для всех ошибок. Проблема, с которой я сталкиваюсь, есть некоторые ошибки, которые я не могу уловить. Например, если я пытаюсь вызвать действие, которое не поддерживает GET ответ по умолчаниюASP.NET Переопределить все стандартные ответы об ошибках HTTP
{ «Сообщение»: «Запрашиваемый ресурс не поддерживает метод HTTP „GET“»}
Это прекрасно, но я хочу контролировать формат. Я хочу контролировать каждую автоматическую ошибку, как это, поэтому я могу убедиться, что ничего не получается, что я не хочу выводить. Мне нужно уметь грациозно информировать клиента о возникновении исключения кода.
Я нашел это, и это, кажется, то, что я ищу, но он, похоже, не ловит ошибки, поскольку для них нет соответствующих действий. How to override all standard error pages in WebAPI
Я попытался реализовать это, но я все равно получаю то же сообщение об ошибке сверху, даже если у меня это в главном контроллере.
[AllowAnonymous]
[ActionName("405")]
[HttpGet]
public string Status405()
{
return "error";
}
Я надеялся, что бы OnError событие или что-то, что будет действовать как поймать все, чтобы я мог отвергнуть все. Я пытался работать построена на HttpResponseEx
public class ErrorFilter : System.Web.Http.HttpResponseException
{
public override string Message
{
get
{
return "My custom response based on whatever params are in this error";
}
}
}
Это не работает либо и я могу понять, почему, как оно не задействовать какие-либо события, которые получают запускаемые.
Несомненно, есть способ сделать это. Как это обычно делается?
Не относится ли это только к сообщениям, которые обрабатывает IIS? Например, если кто-то попытается получить доступ к директории iis, будет отображаться 403. В этом случае фактический контроллер, похоже, генерирует этот ответ, а не IIS. –
Действительная точка. Проверьте файл global.asax на что-то вроде public static void RegisterGlobalFilters (Фильтры GlobalFilterCollection) { filters.Add (новый HandleErrorAttribute()); } на основе этого http://stackoverflow.com/questions/8128302/custom-error-handler-for-http-error-405-in-mvc –