我有一个带有 /api 文件夹的 MVC 项目,其中包含我的 Web API 控制器。我想要以下东西:
- 我的 MVC 站点在发生错误时提供自定义错误页面
- 我的 Web API 提供默认错误响应(包含异常和堆栈跟踪的 json/xml)
在我的 MVC 站点的 web.config 中,我有一个 httpErrors 节点,并将 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(这是所需的行为)。
有没有办法将自定义错误配置为仅适用于我的 MVC 站点而不适用于 Web API?这个博客说没有(http://blog.kristandyson.com/2012/11/iis-httperrors-aspnet-web-api-fully.html),但我想听听其他人是否找到了工作自从该博客发布以来。
我想如果没有,我可以为我的 Web API 项目创建一个单独的项目/程序集。这将允许我分别为 MVC 和 Web API 配置 httpErrors,但我不想创建另一个项目,所以我还有另一个 web.config 需要配置。