ASP.NET MVC3中的抗试验方法误差



im试图在我的ASP.NET MVC3应用程序中验证抗试验令牌。我的代码如下:

void ValidateRequestHeader(HttpRequestMessage request)
        {
            string cookieToken = "";
            string formToken = "";
            IEnumerable<string> tokenHeaders;
            if (request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders))
            {
                string[] tokens = tokenHeaders.First().Split(':');
                if (tokens.Length == 2)
                {
                    cookieToken = tokens[0].Trim();
                    formToken = tokens[1].Trim();
                }
            }
            //Validation
            AntiForgery.Validate(cookieToken, formToken);
        }

函数抗试验性效能似乎不起作用,并显示以下错误:

The best overloaded method match for System.Web.Helpers.AntiForgery.Validate(System.Web.HttpContextBase, string)' has some invalid arguments

然而,在MSDN上,该函数作为超载的功能存在。这是参考错误吗?我正在使用system.web.helpers名称空间。

用虚拟项目进行快速测试告诉我, asp.net mvc3 do not 没有方法AntiForgery.Validate(string, string)。它只有:

  1. System.Web.Helpers.AntiForgery.Validate()
  2. System.Web.Helpers.AntiForgery.Validate(System.Web.HttpContextBase, string)

您可能想升级项目或更改:

AntiForgery.Validate(cookieToken, formToken);

to

AntiForgery.Validate(this.HttpContext, formToken); // I hope that the correct httpcontext, you might wanna check though.

最新更新