【问题标题】:Web API Filter sending error response immediatelyWeb API 过滤器立即发送错误响应
【发布时间】:2017-04-29 08:00:11
【问题描述】:

优雅退出 Web api 过滤器的标准方法是什么?

我似乎在 web api 过滤器中有以下两个选项:

  1. 抛出新的 HttpResponseException(HttpStatusCode.BadRequest);
  2. filterContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);

选项一立即退出过滤器,但我必须抛出异常。

选项二看起来更优雅,但代码将继续在过滤器中,所以我必须要不然我的过滤器中的废话。

执行此操作的标准方法是什么?我的谷歌搜索并没有找到一条清晰的前进道路。有没有更神奇的第三种独角兽方式来做到这一点?

【问题讨论】:

  • 过滤器在做什么?

标签: c# asp.net-web-api filter


【解决方案1】:

与同事交谈后,我可能会得到答案。告诉我我的方法是否错误。

看来重组我的过滤器会更好。我将把我的过滤器代码放在一个返回布尔值的函数中。在我的功能中,我可以随时返回。然后我的过滤器将只检查布尔响应并返回授权或未授权

【讨论】:

  • 这取决于您的过滤器在做什么。根据您的问题,您似乎在谈论授权过滤器。如果您的代码在用于确定用户是否被授权(返回布尔值)的覆盖方法中,那么您是正确的,返回“false”将完全符合您的要求
  • 是的,我编写了一个自定义身份验证过滤器,因为标准方法不太适合我的需求。现在一切似乎都很好。我将烫发检查放在一个单独的函数中,并将一个布尔值返回给我的 OnAuthorization 方法。没有昂贵的例外,它会立即返回。
猜你喜欢
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 2021-12-04
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
相关资源
最近更新 更多