100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > c# forbidden.html c# – 如何使用Forbidden状态web api返回ModelState

c# forbidden.html c# – 如何使用Forbidden状态web api返回ModelState

时间:2023-07-30 06:20:25

相关推荐

c# forbidden.html c# – 如何使用Forbidden状态web api返回ModelState

您可以使用InvalidModelStateResult的ExecuteAsync方法(ApiController的BadRequest()方法的返回类型)来实现所需的输出,该方法实际上序列化了ModelState.

因此,我们的想法是创建一个新类,该类扩展InvalidModelStateResult并覆盖ExecuteAsync方法以更改状态代码.

public class ModelStateResult : InvalidModelStateResult

{

private readonly HttpStatusCode _status;

public ModelStateResult(ModelStateDictionary modelState, ApiController controller, HttpStatusCode status) : base(modelState, controller)

{

_status = status;

}

public override Task ExecuteAsync(CancellationToken cancellationToken)

{

var response = base.ExecuteAsync(cancellationToken).Result;

response.StatusCode = _status;

return Task.FromResult(response);

}

}

使用它像:

return new ModelStateResult(ModelState, this, HttpStatusCode.Forbidden); //this refers to ApiController here

我认为这只是一个解决方法,希望有人发布更好的方法来实现它.

编辑:

不使用InvalidModelStateResult:

public class ModelStateResult : IHttpActionResult

{

public HttpStatusCode Status { get; }

public ModelStateDictionary ModelState { get; }

public HttpRequestMessage Request { get; }

public ModelStateResult(HttpStatusCode status, ModelStateDictionary modelState, HttpRequestMessage request)

{

Status = status;

ModelState = modelState;

Request = request;

}

public Task ExecuteAsync(CancellationToken cancellationToken)

{

var response = Request.CreateErrorResponse(Status, ModelState);

return Task.FromResult(response);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。