#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.
Ответ №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. Это неверно. Это просто обходит встроенный механизм, фактически он не заменяет и не возвращает другой ответ, когда состояние модели недопустимо