У меня есть проект MVC с папкой /api, которая содержит мои контроллеры Web API. Я хочу следующее:
- Мой сайт MVC для обслуживания страницы пользовательских ошибок при возникновении ошибки
- Мой веб-API для обслуживания ответа об ошибке по умолчанию (json/xml, содержащий исключение и трассировку стека)
В web.config для моего сайта MVC у меня есть httpErrors node и установите для параметра errorMode значение "Пользовательский", чтобы у меня были хорошие страницы ошибок, когда 404s/500s/etc. при просмотре сайта MVC:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<error prefixLanguageFilePath="" statusCode="404" path="Content\notfound.htm" responseMode="File" />
<error statusCode="500" path="/Errors" responseMode="ExecuteURL" />
<error statusCode="403" path="/Errors/Http403" responseMode="ExecuteURL" /></httpErrors>
Однако при такой конфигурации API будет обслуживать страницу пользовательских ошибок при возникновении ошибки, а не json/xml с трассировкой exception/stack (что является желаемым поведением).
Есть ли способ настроить собственные ошибки только для моего MVC-сайта, а не для Web API? Этот блог говорит, что нет (http://blog.kristandyson.com/2012/11/iis-httperrors-aspnet-web-api-fully.html), но я хотел бы услышать, если кто-то еще нашел работу, поскольку этот блог был опубликован.
Я полагаю, что если бы я не мог создать отдельный проект/сборку для моего проекта веб-API. Это позволило бы мне настроить HTTPErrors для MVC и веб-API отдельно, но я бы предпочел не создавать другой проект, так что у меня есть еще один конфигуратор web.config.