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);
}
}
總結
以上是生活随笔為你收集整理的c# forbidden.html,c# – 如何使用Forbidden状态web api返回ModelState的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android--service之aid
- 下一篇: 计算机科学基础第二版答案,浙江大学计算机