【问题标题】:Error handling with Web API 2 and Forms application in same project - how to setup to handle both?在同一个项目中使用 Web API 2 和 Forms 应用程序处理错误 - 如何设置来处理两者?
【发布时间】:2016-10-03 13:13:10
【问题描述】:

我有一个项目,其中包含 both Web API 2 服务和 aspx 表单。但是我正在尝试设置错误处理,因此如果他们尝试在 url 中放入假页面,我可以将用户发送到 404 错误页面。当然,Web API 还需要将 400 状态消息发送回调用 Web 服务的用户,所以我试图保持两者的功能。主要问题是我不确定如何最好地设置 web.config,因为它不起作用。在我的项目中,我有一个 error.aspx 和 error404.aspx 页面。

在 web.config 文件中有这个:

<customErrors mode="RemoteOnly" defaultRedirect="~/error.aspx" redirectMode="ResponseRewrite">
  <error statusCode="404" redirect="~/error404.aspx"/>
</customErrors>

<!-- setting existingResponse="PassThrough" needed, otherwise web api 400 error messages will not return -->
    <httpErrors existingResponse="PassThrough" errorMode="Custom">
  <remove statusCode="404" subStatusCode="-1"/>
  <error statusCode="404" prefixLanguageFilePath="" path="/myApp/error404.aspx" responseMode="ExecuteURL"/>
</httpErrors>

当我放入虚假页面时,我的应用将返回如下内容:http://myServer/myApp/fake.aspx

“/myApp”应用程序中的服务器错误。 运行时错误 描述:处理您的请求时发生异常。此外,在执行第一个异常的自定义错误页面时发生了另一个异常。请求已终止。

但是,如果我在 web.config 中进行更改,我可以显示 404 页面:&lt;httpErrors existingResponse="Replace" 但是进行此更改会导致 Web API 400 状态代码消息 not 当我从 我的控制器的 get 函数:Return BadRequest("Your parameter is invalid") 但这些状态消息对于服务的使用者非常重要。

有什么想法可以设置项目以便让两个错误都显示吗? Setting &lt;httpErrors existingResponse="Auto" 允许返回 Web API 错误,但不允许返回错误表单请求的 error404.aspx。

有一件事我想知道,如果 Global.asax 文件可能有帮助,如 here 所示,或者这样的过程是否可能?

【问题讨论】:

    标签: asp.net error-handling asp.net-web-api2


    【解决方案1】:

    实际上不应该在 web.config 文件中设置错误页面。

    我遵循了这篇文章中概述的技术:Custom error pages for non-existant directory/file Web API (not controllers)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2014-07-29
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多