Html.AntiForgeryToken()引发错误“发送HTTP标头后服务器无法附加标头。”

时间:2018-09-20 13:57:53

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

我正在做一个自制项目,并且遇到上述错误。我创建了2个角色,在注册过程中给用户。这两个角色使用户有特权与我的网页的某些部分进行交互。

“用户”角色将提供对〜/ Jobs / Jobs的访问权限,而“ HR”角色将提供对〜/ Profile / Profiles的访问权限。在负责导航栏的页面布局视图中,它工作正常。只有当我具有导航所需的角色时,才能在导航栏上看到该特定按钮。

在创建这些角色之前,我只是使用了!User.Identity.IsAuthenticated()条件,如果用户未登录,该条件会将用户重定向到登录页面。这是我的角色特定.cshtml文件的起始条件。

         @{
              if (!User.Identity.IsAuthenticated())
              {
                  Response.Redirect("~/Account/Login");
              }
          }
          ...

一切正常。

现在我有我的角色,我将其更改为!User.Identity.IsInRole(string parameter)的条件,该条件会将用户重定向到主页,但出现上述错误。现在,此条件是我特定于角色的.cshtml文件的开始条件。

         @{
              if (!User.IsInRole("User")) // or "HR" on the other page
              {
                  Response.Redirect("~/Home/Index/");
              }
          }
          ...

我的错误在_LoginPartial.cshtml文件中弹出。

         @using Microsoft.AspNet.Identity
         @if (Request.IsAuthenticated)
         {
             using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = 
             "logoutForm", @class = "navbar-right" }))
         {

         @Html.AntiForgeryToken()
         ...

当我尝试进入不允许访问的特定于角色的页面时出现错误。例如,尝试以“用户”身份进入“ HR”角色要求的页面(〜/ Profile / Profiles)会抛出错误,反之亦然。我想重定向而不是此错误。

所以我有2个问题。为什么我得到User.IsInRole(string parameter)条件的错误,@Html.AntiForgeryToken()会做什么?我想了解。 :)

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我没有尝试在视图中处理此问题,而是在控制器中处理了它。尽管我仍然不明白为什么它会导致问题。