Member 10316149 Ответов: 2

перезагрузите страницу в пуле приложений iis время простоя


Я получаю эту ошибку, когда нажимаю на abutton после того, как оставил свою веб-страницу включенной примерно на 5 минут.
минуты и любой ответ. перенаправление сбрасывает время.
Im хостинг на общем плане хостинга godaddy и не может изменить время ожидания пула приложений iis (которое составляет 5 минут)
я хочу, чтобы страница обновлялась при возникновении этой ошибки, а не пользовательской страницы ошибок
ошибка:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

2 Ответов

Рейтинг:
14

AdamASPGeek

Используете ли вы сеанс? В принципе, общий хостинг не позволяет использовать сеанс, так как это повлияет на сайт других клиентов на этом сервере. В качестве альтернативы вы можете использовать ASP.NET состояние сеанса. Пожалуйста, обратитесь к

- http://blogs.msdn.com/b/johan/archive/2006/11/20/sessionstate-performance.aspx
- http://forums.asp.net/t/1803857.aspx/1?Session+out+frequently+in+asp+net+
- http://msdn.microsoft.com/en-us/library/ms972429.aspx


Member 10316149

Спасибо Адамсу за ваш ответ, я использую sessionstate, но все еще не работаю. Я думаю, что, поскольку пул приложений IIS idletimeout установлен на 5 минут, именно поэтому я получаю ошибку, когда отправляю сообщение обратно на сервер после 5 минут простоя.
В любом случае, я перезаписываю idletimeout в своем файле web.config.

Рейтинг:
0

Member 3457169

У меня такая же проблема с godaddy и я решил ее с помощью этого решения :


1-на Вашей странице site.master создайте панель обновления и поставьте в нее таймер с этим интервалом на Вашей странице разметки, вот так :

<asp:UpdatePanel ID="uppLiveTime" runat="server" RenderMode="Block" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Timer ID="tmrLiveTime" runat="server" Interval="270000"></asp:Timer>
        </ContentTemplate>
</asp:UpdatePanel>


этот интервал равен: 1000 * 60 (в таймере 1 секунда = 1000 * 60 для преобразования его в 1 минуту) * 4,5
наконец-то = 1 * 1000 * 4.5 = 270000 это означает, что таймер будет запускать тиковое событие каждые 4,5 минуты .


2 - код внутри события Tick позади, обновить UpdatePanel и как это :
Private Sub tmrLiveTime_Tick(sender As Object, e As EventArgs) Handles tmrLiveTime.Tick
        On Error Resume Next
        uppLiveTime.Update()
 End Sub

Это обновит вашу панель обновления и частично обновит вашу страницу (не перезагружая).

3 - в вашем событии Page_load снова отключите и включите таймер, например так :
Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        tmrLiveTime.Enabled = False
        tmrLiveTime.Enabled = True
    End Sub

это позволит перезапустить операции таймера, чтобы быть уверенным, что при перенаправлении пользователя со страницы на страницу таймер все еще работает .

Примечание : не меняйте настройки UPDATEPANEL и убедитесь, что режим UPDATEPANEL должен быть (
UpdateMode="Conditional"
) ДЛЯ ВЫПОЛНЕНИЯ CORRECTLLY

Я решил свою проблему с godaddy в моем asp.net приложение таким образом и работает успешно, и мое приложение не имеет тайм-аута прямо сейчас.

и извините, если мой английский не очень хорош, но я хочу вам помочь, Спасибо .