Не удалось проверить MAC представления состояния при отправке формы при загрузке страницы - PullRequest
1 голос
/ 14 января 2011

У меня есть образец страницы с именем Redirect.aspx со следующим содержанием;

<body onload="document.forms.container.submit()">
    <form id="container" runat="server" method="post" name="container">
        <input type="hidden" value="<%=Request["APP_ID"]%>" name="APP_ID" />
    </form>
</body>

метод Page_Load следующий:

protected void Page_Load(object sender, EventArgs e)
{            
    container.Action = Configuration.Instance.PageToRedirect;
}

На эту страницу Redirect.aspx меня направляют с какой-то внешней страницы. В контексте запроса у меня есть ключ APP_ID, который передается с этой внешней страницы. Далее я хочу передать это значение APP_ID с помощью POST на другую страницу, которая определена в конфигурации. К сожалению, я получаю такую ​​ошибку при перенаправлении:

Ошибка проверки состояния MAC-адреса. Если это приложение размещено в сети Ферма или кластер, убедитесь, что конфигурация указывает тот же validationKey и validation алгоритм. Автогенерация не может быть использована в кластере.

Я не хочу отключать проверку состояния представления (<pages enableViewStateMac="false">), потому что это не «решение», которое я хочу применить.

Кроме того, я не понимаю, почему я получаю такую ​​ошибку. Может ли кто-нибудь пройти через это? Есть ли другой способ автоматически отправить форму на событие Page_Load?

Привет

Ответы [ 2 ]

1 голос
/ 14 января 2011

2 идей:

  1. Проверьте, действительно ли рассчитывается значение <% = Request ["APP_ID"]%>, и вы не публикуете это как строку.Вы не можете публиковать символы HTML-тегов, такие как «<» или «>».Если значение не рассчитывается, это означает, что вы не привязываете страницу к данным.Быстрым решением было бы поместить this.DataBind () в ваш код за файлом.

  2. Сгенерируйте MachineKey вручную в вашем файле web.config (вы можете использовать онлайн-инструмент для этого: http://aspnetresources.com/tools/machineKey). В одном из моих приложений это решило мои проблемы, даже если я не нахожусь в веб-ферме (хотя я не помню подробности проблемы).

Также, пожалуйста, поясните это: «Далее я хочу передать это значение APP_ID с помощью POST на другую страницу, которая определена в конфигурации», если вы уверены, что ошибка возникает, когда вы делаете перенаправление, как вы заявляете, или оно в этомсообщение? Пытаетесь ли вы перекрестно опубликовать значение в другом приложении в другом домене? Обычно это невозможно.

0 голосов
/ 14 января 2011

Я думаю, вы можете отредактировать тег страниц в web.config с помощью:

<pages maxPageStateFieldLength="512">

возможно, это может решить твою проблему ...

...