简短的问题:为什么 safari 会导致我的 MVC3 Web 应用程序出错 - Request.Form 由于某种原因是空白的?
详细问题:每次出现未捕获的异常时,我的 MVC3 网站都会向我发送一封电子邮件。我使用这些来快速查找和修复错误,电子邮件包含异常、堆栈跟踪、用户的 IP 地址、用户代理字符串以及可能已发布的任何表单值。
最近我注意到一些已被证明难以追踪的错误,我想我会在这里发布我的发现,希望它们能帮助其他人。
最初的症状是这些错误:System.Web.Mvc.HttpAntiForgeryException:未提供所需的防伪令牌或无效。
我的表单操作引发了错误,我无法弄清楚任何人如何使页面进入没有 __RequestVerificationToken 隐藏字段或其他表单字段的状态。
所以我花了很长时间研究 cookie 以及令牌的工作原理,最终只是删除了我的 ActionResult 上的 [ValidateAntiForgeryToken] 属性以查看它是如何进行的 - 但我仍然遇到错误。
然后我注意到用户代理字符串显示只有 Safari 5.1.7 导致了这个问题。