none
System.Web.HttpException: Проверка состояния вида MAC не удалась RRS feed

  • Вопрос

  • Добрый день 
     
    прошу помочь (подсказать) в чем может быть ошибка при работе с сайтом https://аша-район.рф
     

    ситуация в следующем

    Пользователь впервые входит на сайт

    Нажимает на ГЛАВНОЙ странице кнопку — Специальная версия для людей с ограниченными возможностями

    И в ответ получает ошибкуc == см ниже

    При последующем нажатии на эту кнопку == все работает как положено 

    Я изменил файл wеb.config — добавил machineKey

    IP адрес пользователя :           81.177.143.251
    Тип браузера :           Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4023.0 Safari/537.36 Edg/81.0.396.0
    Page :           http://xn----7sbab9byagn3e.xn--p1ai/default.aspx
    Error Message :  Информация о состоянии недействительна для этой страницы и может быть повреждена.
    Inner Message :  System.Web.UI.ViewStateException: Неверное состояние вида. 
    Client IP: 81.177.143.251
    Port: 8013
    Referer: https://xn----7sbab9byagn3e.xn--p1ai/
    Path: /default.aspx
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4023.0 Safari/537.36 Edg/81.0.396.0
    ViewState: /wEdAAKvVXD1oYELeveMr0vHCmYPp7ElzY2C16XPjuiqM4CNDT8ov31jh6DSTrF24rMi1kzXOVHs ---> System.Web.HttpException: Проверка состояния вида MAC не удалась. Если приложение размещено в веб-ферме или кластере, убедитесь в том, что в конфигурации <machineKey> задан тот же проверочный ключ validationKey и алгоритм проверки. Функцию AutoGenerate нельзя использовать в кластере.

    Дополнительные сведения см. по адресу http://go.microsoft.com/fwlink/?LinkID=314055. ---> System.Web.UI.ViewStateException: Неверное состояние вида. 
    Client IP: 81.177.143.251
    Port: 8013
    Referer: https://xn----7sbab9byagn3e.xn--p1ai/
    Path: /default.aspx
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4023.0 Safari/537.36 Edg/81.0.396.0
    ViewState: /wEdAAKvVXD1oYELeveMr0vHCmYPp7ElzY2C16XPjuiqM4CNDT8ov31jh6DSTrF24rMi1kzXOVHs
       --- Конец трассировки внутреннего стека исключений ---
       в System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
       в System.Web.UI.ObjectStateFormatter.Deserialize(String inputString, Purpose purpose)
       в System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter2.Deserialize(String serializedState, Purpose purpose)
       в System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded()
       --- Конец трассировки внутреннего стека исключений ---

    Прошу подсказать как решить данную проблему 

    С уважением Юрий 

    28 января 2020 г. 3:26

Все ответы

  • Здравствуйте,

    1) Уточните пожалуйста, вы арендуете выделенный сервер или shared-хостинг?

    2) ключ machineKey сами сгенерировали или скопировали откуда-то?

    The machine key configuration panel

    3) Тот же ключ machineKey, где-то еще используется на хостинге?


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    28 января 2020 г. 4:29
    Модератор
  • Чтобы корректно обрабатывалось Session State (при нескольких  web-серверах и при редиректе сессий между ними), то нужно сгенерировать Machine Key на одном из серверов и использовать его же на других web-серверах. 
    28 января 2020 г. 6:07
  • 1) Уточните пожалуйста, вы арендуете выделенный сервер или shared-хостинг?

                     shared-хостинг == 1gb.ru

    2) ключ machineKey сами сгенерировали или скопировали откуда-то?

         https://xn----7sbab9byagn3e.xn--p1ai/mkey.aspx 

    code

    using System.Collections.Generic;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class MKey : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            txtDecryptionKey.Text = CreateMachineKey(48);
            txtValidationKey.Text = CreateMachineKey(128);
        }
    
        public static string CreateMachineKey(int length)
        {
            // Создать массив байтов
            byte[] random = new byte[length / 2];
    
            // Создать криптографически устойчивый генератор случайных чисел 
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    
            // Заполнить массив байтов случайными байтами
            rng.GetBytes(random);
    
            // Создать StringBuilder для размещения результата после 
            // его преобразования в шестнадцатеричный формат
            System.Text.StringBuilder machineKey = new System.Text.StringBuilder(length);
    
            // Проход в цикле по массиву случайных байтов с присоединением 
            // каждого значения к StringBuilder
            for (int i = 0; i < random.Length; i++)
                machineKey.Append(String.Format("{0:X2}", random[i]));
    
            return machineKey.ToString();
        }
    }

    3) Тот же ключ machineKey, где-то еще используется на хостинге?

        уверен что нет 

    вот код из web.congig

    <system.web>
        <machineKey decryption="Auto" decryptionKey="*****" validation="SHA1" validationKey="*****" />
     <pages controlRenderingCompatibilityVersion="4.5" viewStateEncryptionMode="Auto" clientIDMode="AutoID" enableViewStateMac="false">
    </system.web>
        


    28 января 2020 г. 6:15
  • Чтобы корректно обрабатывалось Session State (при нескольких  web-серверах и при редиректе сессий между ними), то нужно сгенерировать Machine Key на одном из серверов и использовать его же на других web-серверах. 

    сервер один и тот же 
    переключение вида сайта происходит за счет смены мастер страницы

    Session State установлено так <sessionState timeout="300" />

    • Изменено krakoss 28 января 2020 г. 6:43
    28 января 2020 г. 6:42
  • Здравствуйте krakoss,

    Есть вероятность, что проблема происходит из-за того что Application Pool перегружается на момент появление ошибки. Уточните пожалуйста на указанном хостинге, какой временной период установлен для работы веб-приложения?

    P.S. Обычно shared -хостинге уменьшают параметр time-out для ApplicationPool, чтобы не забить память сервера, тем самым увеличить производительность сервера, судя как у вас долго грузиться  веб-приложение, ваше веб-приложения упирается в лимиты.

    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    28 января 2020 г. 23:28
    Модератор
  • Спасибо за помощь в нахождении ответа на данный вопрос 

    я уже отправил письмо админу хостинга ...

    а то в поисках решения уже отыскал на просторах инета вот это решение 

    How to fix ViewStateException Invalid ViewState?


    • Изменено krakoss 29 января 2020 г. 5:24
    29 января 2020 г. 3:09
  • Спасибо за помощь в нахождении ответа на данный вопрос 

    я уже отправил письмо админу хостинга 1ГБ.РУ 

    а то в поисках решения уже отыскал на просторах инета вот это решение 

    How to fix ViewStateException Invalid ViewState?

    Если админы хостинга не смогут помочь вам, попробуйте рассмотреть возможность перехода на другой хостинг-провайдер (если конечно проблема не в коде веб-приложения), которые предлагают поддержку ASP.NET и ASP.NET Core.

    Сообщите пожалуйста, если найденное вами решение, помогло вам справиться с проблемой?

    P.S. Обратите внимние, тут кроме услуг и продуктов компании Microsoft запрещено советовать (рекламировать).

    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 29 января 2020 г. 3:48 обновлено
    29 января 2020 г. 3:44
    Модератор