У меня есть проект web api 2
в .net 4.6.1
, в который я пытаюсь добавить пользовательский ValidateModelAttribute
, но получаю предупреждение для сборки system.net.http 4.0
.
Вот свойства сборки
Я пытался удалить и переустановить пакет несколько раз, но получаю одно и то же предупреждение. И когда я пытаюсь использовать CustomModelAttribute
, вызов api от Postman выдает следующую ошибку
{
«Сообщение»: «Произошла ошибка.»,
«ExceptionMessage»: «Метод не найден: 'System.Net.Http.HttpRequestMessage System.Web.Http.Controllers.HttpActionContext.get_Request ()'.»,
"ExceptionType": "System.MissingMethodException",
«StackTrace»: «в myapi.Api.Mvc.Filters.ValidateModelAttribute.OnActionExecuting (HttpActionContext actionContext) \ r \ n в System.Web.Http.Filters.ActionFilterAttribute.OnActionExecutingAsyncContext \ r \ nActionExecutingAsyncText, cancellationText, CancellationExecutingAsyncText (действие) - Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи ) \ r \ n в System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext () \ r \ n --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- \ r \ n в System.Runtime .CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) \ r \ n в System.Web.Http.Controllers.Nulte__ \ n --- Конец трассировки стека f из предыдущего места, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) \ r \ n в System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext () "}
Вот настраиваемый атрибут
using System.Net;
using System.Web.Http.Controllers;
using System.Net.Http;
using System.Web.Http.Filters;
namespace myapi.Api.Mvc.Filters
{
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.ModelState.IsValid == false)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
}