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)
。它只有:
-
System.Web.Helpers.AntiForgery.Validate()
-
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.