我在web api 2
中有一个.net 4.6.1
项目,其中我尝试添加自定义ValidateModelAttribute
,但我收到system.net.http 4.0
程序集的警告。
以下是装配属性
我已尝试多次删除并重新安装软件包但我仍然收到相同的警告。当我尝试使用CustomModelAttribute
来自Postman的api调用时会抛出以下错误
{
“消息”:“发生了错误。”,
“ExceptionMessage”:“找不到方法:'System.Net.Http.HttpRequestMessage System.Web.Http.Controllers.HttpActionContext.get_Request()”。“,
“ExceptionType”:“System.MissingMethodException”,
“StackTrace”:“at myapi.Api.Mvc.Filters.ValidateModelAttribute.OnActionExecuting(HttpActionContext) actionContext)\ r \ n at System.Web.Http.Filters.ActionFilterAttribute.OnActionExecutingAsync(HttpActionContext actionContext,CancellationToken cancellationToken)\ r \ n ---结束 从抛出异常的先前位置堆栈跟踪--- \ r \ n 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)\ r \ n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\ r \ n at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext(个)\ r \ n --- 从抛出异常的先前位置开始的堆栈跟踪结束 --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)\ r \ n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\ r \ n at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext(个)\ r \ n --- 从抛出异常的先前位置开始的堆栈跟踪结束 --- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)\ r \ n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\ r \ n at 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);
}
}
}
}
答案 0 :(得分:0)
我终于开始工作了。我所要做的就是右键单击system.net.http
程序集并单击属性。然后我将copy local
设置为true