我们手上有一个真正的Heisenbug:我们在我们的网站上实施了MVC 3 AntiForgeryToken技术,并且遇到了间歇但非常令人沮丧的错误请求错误。他们似乎主要使用的是IE9(在Chrome上不是这样,而不是在Firefox上),当用户清除缓存然后关闭并重新启动浏览器时,有时(但并非总是如此)消失。
主要的编码人员(不再与公司合作)在实施中做了一些非标准的事情,我想知道:
而不是装饰每个控制器方法的[ValidateAntiForgeryToken]属性,他在我们所有控制器后代的基本控制器类中放置了属性的显式声明。我想知道这是否与令牌的生成方式有关。
我们在AJAX调用中有令牌,在许多情况下会返回整个HTML页面(主要是弹出窗口)。这导致两个或多个标签成为一个页面,每个标签都有自己的验证令牌 - 这些令牌彼此不同,也与用于验证的cookie值不同。我们在jQuery AJAX调用中包含了代码,以包含VerificationToken的值(请参阅ASP.net MVC AntiForgeryToken over AJAX)。这些页面大部分时间都在工作的事实告诉我,正确的隐藏令牌会被发布以获得授权,但我想知道什么是错误的。
我正在尝试在验证方法中放置一个try-catch块,它至少会给我们cookie值和令牌以查看它们是否都存在。任何人都可以想到在调试过程中有用的其他值吗?令牌是否有时间限制 - 我们在一段时间内坐在页面上时遇到了一些错误。
最后,为什么错误会突然出现在生产服务器上,而在开发生命周期中却没有出现?
任何线索对我来说都是最有帮助的。
由于