如何从AuthorizeAttribute的继承者HandleUnauthorizedRequest返回子状态如403.7的http状态代码?我知道如何返回没有子状态的http状态代码:
protected override void HandleUnauthorizedRequest(AuthorizationContext ctx)
{
ctx.Result = new HttpStatusCodeResult(403);
}
但我在HttpStatusCodeResult构造函数中找不到子状态代码。
[UPDATE] 我也尝试这个代码,但响应起始行看起来像#34; HTTP / 1.1 403 Forbidden" (不是HTTP / 1.1 403.7禁止):
protected override void HandleUnauthorizedRequest(AuthorizationContext ctx)
{
ctx.HttpContext.Response.StatusCode = 403;
ctx.HttpContext.Response.SubStatusCode = 7;
ctx.HttpContext.Response.End();
}
答案 0 :(得分:2)
虽然设置子状态为possible,但该值永远不会传递给客户端,仅对日志记录等内容有用。
相反,您需要以另一种方式将数据提供给客户端。您可以使用响应正文,或者在这种情况下,我可能会设置一个您可以在客户端中读取的自定义HTTP标头:
ctx.HttpContext.Response.AddHeader("Status", "SomethingWentWrong");