ASP.NET MVC3中的Antiforgery.Validate方法错误

时间:2014-02-04 06:58:44

标签: c# asp.net asp.net-mvc asp.net-mvc-3

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

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

Antiforgery.Validate函数似乎不起作用并显示以下错误:

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

但是,在MSDN上,该函数作为重载函数之一存在。这是参考错误吗?我正在使用System.Web.Helpers命名空间。

1 个答案:

答案 0 :(得分:2)

使用虚拟项目的快速测试告诉我, ASP.NET MVC3 NOT 有方法AntiForgery.Validate(string, string)。它只有:

  1. System.Web.Helpers.AntiForgery.Validate()
  2. System.Web.Helpers.AntiForgery.Validate(System.Web.HttpContextBase, string)
  3. 您可能希望升级项目或更改:

    AntiForgery.Validate(cookieToken, formToken);
    

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