【问题标题】:Returning HTTP 403 in a WebAPI method在 WebAPI 方法中返回 HTTP 403
【发布时间】:2013-06-16 13:53:28
【问题描述】:

如何从WebAPI 方法返回HTTP 403?我试过用HttpStatusCode.ForbiddenHttpResponseException,我试过了

return request.CreateErrorResponse(HttpStatusCode.Forbidden, pEx);

两者都不起作用。两者总是返回HTTP 200。我错过了什么?它必须很简单,但我看不到。

【问题讨论】:

标签: asp.net asp.net-web-api


【解决方案1】:

您的路由配置可能有问题。下面是一个工作示例。把它放在你的控制器中,看看它是否有效。如果没有,请使用诊断工具(即 Cobisi 路由助手)检查您的路由。

public HttpResponseMessage GetSomeString(int id)
{
    // This method is not allowed!
    return this.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "This method is not allowed!");
}

【讨论】:

  • Teoman,确实有效。奇怪的是,这似乎是与 DotNetOpenAuth 的某种交互。我的 web api 是一个使用 DotNetOpenAuth 保护的端点。如果我在没有通过 DotNetOpenAuth 验证的情况下调用我的方法,我会得到 403。但是,如果我通过 DotNetOpenAuth 验证调用它,并且验证失败(这是我想要返回 403 的情况),同一行您建议运行的代码,但是无论我得到什么 200 回来。所以我想我必须用 dotnetopenauth 标签重新发布。
  • 从 HttpResponseMessage 到 String 的无效转换
  • 如何修复无效的强制转换为字符串?
  • 你总是可以抛出一个 HttpResponseException(HttpStatusCode.Forbidden) 来代替。
猜你喜欢
  • 1970-01-01
  • 2015-02-24
  • 2015-11-26
  • 2017-06-19
  • 1970-01-01
  • 2020-01-12
  • 2023-01-31
  • 2015-10-23
  • 2015-01-18
相关资源
最近更新 更多