【问题标题】:How to cancel webapi bulit in parse response如何取消内置在解析响应中的 web api
【发布时间】:2019-03-05 19:12:33
【问题描述】:

首先它发生在 webapi 2.2 中而不是旧版本中 https://devblogs.microsoft.com/aspnet/asp-net-core-2-1-web-apis/

我从 webapi 响应中得到

{
    "ProductValue": [
        "The input was not valid."
    ]
}

我如何取消此响应并在其中得到错误

ModelState.IsValid

我需要返回更多字段来响应

这个反应对我不好

对于那些在 dubug 中难以理解的人,我不进入 这个功能,因为web api内置机制 回复他的回应 {code=9}

public MyResponse Start(Request req)
{
    if (ModelState.IsValid)
    {
        return new MyResponse(){code=0} ;
    }
     return new MyResponse(){code=9} ;
}

【问题讨论】:

  • 老兄,这需要更多的信息,你甚至都不知道。我们可以获取代码示例吗?很可能,您将错误的类型传递给控制器​​,而 webapi 正在合并该位
  • 就像我写的,这是 webapi 响应而不是我的,如果模型无效,我想取消响应并返回我的响应
  • 您可以访问 Web API 代码吗?
  • 就像我之前说的,响应是 web api 内置机制,在调试中我不介入函数,因为 web api 内置机制响应返回他的响应,可能是 webapi core2 的东西

标签: c# asp.net-core-2.0


【解决方案1】:

不确定您要达到的目标,但如果您想发送自己的自定义错误响应,那么您可能可以执行以下操作(假设)

Product p = GetProduct(productvalue);
if (p == null)
{
    HttpError err = new HttpError($"Product with productvalue {productvalue} not found");
    return Request.CreateResponse(HttpStatusCode.NotFound, err);
}
else
{
    return Request.CreateResponse(HttpStatusCode.OK, p);
} 

【讨论】:

    【解决方案2】:
    services.AddMvc()
        .ConfigureApiBehaviorOptions(options =>
        {
            options.SuppressModelStateInvalidFilter = true;
    
        });
    

    感谢柯克·拉金

    【讨论】:

    • 这不正确。这只是简单地绕过了内置机制,当模型状态无效时,它实际上并没有替换或返回不同的响应
    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2019-02-08
    相关资源
    最近更新 更多