FireFox 4和<%= Html.AntiForgeryToken()%>麻烦

时间:2011-04-08 10:12:02

标签: asp.net asp.net-mvc asp.net-mvc-3 firefox4

当我尝试使用FireFox4登录时,我收到了错误消息(其他浏览器没有错误):

检查表单MAC的状态是否失败。如果应用程序是Web场或群集,请确保配置指向相同的验证密钥validationKey和验证算法。无法在群集中使用AutoGenerate。

[ViewStateException: 
    Client IP: ::1
    Port: 
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0
    ViewState: X+K7IAAB3XrqQMf0Ym7ZlHeMzvcISEek8a8NX07/uIQ1jEdwJp+/fisjPu64BgVKohucBKZxiX6vdxG+GNAS4qGMJbyCAfB6hwEKvpR9Df9o9gBj5MJTF2AHA6YO87XVvqbC3TNlTBSQ1OLakVvy7Q==
    Referer: http://localhost:1062/
    Path: /login]

登录页面很简单:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" Inherits="ModelViewPage<Graphite.Web.Controllers.Login.LoginViewModel>" %>
<%@ Import Namespace="Graphite.Web.Controllers.Login" %>

<asp:Content ContentPlaceHolderID="main" runat="server" >
<%
  using (Html.BeginForm("Authenticate","Login")) {%>
  <div class="formInput"> 
       <%= this.TextBox(x => x.Username).Label("Username: ")%>
  </div>
  <div class="formInput">
      <%= this.Password(x => x.Password).Label("Password: ")%>
  </div>
  <%=Html.AntiForgeryToken()%>
  <%=this.SubmitButton("Login")%>
<%
  }%>
</asp:Content>

我试图禁用像无脚本这样的愤怒添加,但它对我没有帮助。

1 个答案:

答案 0 :(得分:2)

检查页面在登录按钮上发布的URL(您可以使用firebug)。我怀疑它是回发到aspx页面 - 而不是发布到将被路由到正确控制器的url。

另外,我建议你在MVC的ASP.NET页面中禁用视图状态,因为你只使用它们来渲染输出而不是真正使用它的控件和放大器。背后模型。