Токен защиты от подделки не может быть расшифрован

Я использую IIS 8.5 на веб-ферме с балансировкой нагрузки (двух узлов). Мы получаем спорадические ошибки:

System.Web.Mvc.HttpAntiForgeryException (0x80004005): The anti-forgery
token could not be decrypted....

Я пробовал/проверял различные решения:

  • На уровне сервера я создал явные ключи проверки и расшифровки, как описано здесь и синхронизируйте их на обоих узлах. Следует отметить, что на данный момент я оставил флажок «Создать уникальный ключ для каждого приложения».
  • Маркер создается только один раз на странице, чтобы избежать проблемы, описанной здесь.

Но ошибки сохраняются.

Что я могу сделать дальше, чтобы устранить неполадки?


РЕДАКТИРОВАТЬ:

Код контроллера:

[HttpGet]
public ActionResult Index()
{
    var model = new LoginModel();
    return View(model);
}

Соответствующий код просмотра:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <h1>Log In</h1>
    <fieldset>
        <label>Email</label>
        @Html.TextBoxFor(model => model.Username)                        
        <label>Password</label>
        @Html.PasswordFor(model => model.Password)
        <input type="submit" />
    </fieldset>
}

person anon    schedule 15.07.2016    source источник
comment
Можете ли вы показать нам код? В частности, метод представления и контроллера. Кроме того, синхронизировали ли вы машинные ключи во всех платформах .NET (64- и 32-разрядных) на обеих машинах?   -  person Jeremy Holovacs    schedule 15.07.2016
comment
Мне понадобится время, чтобы анонимизировать код. Что касается машинного ключа, насколько я понимаю, машинный ключ состоит из ключа проверки и ключа дешифрования, которые я синхронизировал через графический интерфейс IIS, как указано в первой ссылке. Это неправильное понимание?   -  person anon    schedule 15.07.2016
comment
Я считаю, что это правильно... но хитрость в том, что есть несколько machine.configs, по одному для каждой версии .NET Framework, установленной на сервере, и для каждой платформы (64/32 бит). Если вы пропустили один, и это тот, который сервер использует для этого запроса, вы столкнетесь с такими проблемами.   -  person Jeremy Holovacs    schedule 15.07.2016


Ответы (1)


У меня была точно такая же проблема, многие люди предлагали изменить машинный ключ, или это могло произойти, если вы включили защиту от подделки более одного раза в форму. Мои проблемы не возникали по какой-либо причине, это произошло по одной простой глупой причине и это неправильное размещение div. Я имею в виду, что если вы закроете div внутри формы MVC, которая открыта снаружи, вы, скорее всего, столкнетесь с этой проблемой.

person Suhas Mallesh    schedule 24.07.2017