小编Ace*_*tna的帖子

即使在本地主机中也无法解密防伪令牌?

即使我在本地主机上运行,​​我的 mvc 网站也给了我这个错误:

无法解密防伪令牌。如果此应用程序由 Web 场或群集托管,请确保所有计算机都运行相同版本的 ASP.NET 网页,并且配置指定显式​​加密和验证密钥。AutoGenerate 不能在集群中使用。

我使用了这个机器密钥:

<machineKey compatibilityMode="Framework20SP1" validationKey='AC0DA63E787522E3BA5D47D8FA0A46EB68BB89A35C6353D5E8D3D5CA416D0DA607E56C6D0861ED3B7194C3ED74C0CE79FE4CE2909F34A6CFBDE134C1A094CA40' decryptionKey='A68360896EF374401123C6C222A7AAD8D430DB4DE34938E1' validation='SHA1'/>
Run Code Online (Sandbox Code Playgroud)

但是还是没有用。另外,我从第三方提取了这个machinekey。我知道它不安全,但微软的方式太复杂了:使用 powershell 生成它?复杂的。然后用IIS?我的 IIS8 没有显示 machinekey 模块。所有这些东西到底是怎么回事。

好的,可能错误是由多个@html.antiforgerytoken 引起的。好吧,我确实有两个 antiforgerytoken,但是当我删除其中一个时,错误仍然存​​在。

我对这个问题感到非常沮丧。我希望有人会善意地提供帮助。相信那些MVC用户在开发MVC网站的时候也遇到过这种情况。就我而言,我只是一个新手,这是我部署的第一个 MVC 网站。

谢谢你的帮助

更新

控制器:

// POST: /Account/Manage
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Manage(ManageUserViewModel model)
    {
        bool hasPassword = HasPassword();
        ViewBag.HasLocalPassword = hasPassword;
        ViewBag.ReturnUrl = Url.Action("Manage");
        if (hasPassword)
        {
            if (ModelState.IsValid)
            {
                IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
                if (result.Succeeded)
                {
                    return RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess });
                }
                else
                {
                    AddErrors(result); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc machinekey asp.net-mvc-5

4
推荐指数
1
解决办法
3万
查看次数

标签 统计

asp.net-mvc ×1

asp.net-mvc-5 ×1

machinekey ×1