Как отменить webapi bulit в ответе синтаксического анализа

#c# #asp.net-core-2.0

#c# #asp.net-core-2.0

Вопрос:

во-первых, это то, что происходит в webapi 2.2, а не в старомhttps://devblogs.microsoft.com/aspnet/asp-net-core-2-1-web-apis /

Я получаю из ответа webapi

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

как я отменяю этот ответ и просто получаю false в

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} ;
}
  

Комментарии:

1. Чувак, для этого нужно гораздо больше информации, ты даже не знаешь. Можем ли мы получить пример кода? Скорее всего, вы передаете неправильный тип контроллеру, и webapi связывает этот бит

2. как я уже писал, это ответ webapi, а не мой, я хочу отменить булит в ответе и вернуть мой, если модель недопустима

3. Есть ли у вас доступ к коду Web API?

4. как я уже говорил ранее, ответ — это встроенный механизм web api, при отладке я не включаю функцию, потому что встроенный в механизм web api ответ возвращает его ответ, возможно, это webapi core2.

5. learn.microsoft.com/en-us/aspnet/core/web-api/…

Ответ №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;

    });
  

спасибо Кирку Ларкину

Комментарии:

1. Это неверно. Это просто обходит встроенный механизм, фактически он не заменяет и не возвращает другой ответ, когда состояние модели недопустимо