Определите, принудительно ли" ошибка протокола " отключила сеанс RDP с конца сервера в C#, а затем повторно подключитесь/мягкая перезагрузка
Всем привет,
У меня есть сотрудник, и он использует облачный VPS для подключения к нашей системе для выполнения своей работы. Что такое облачный VPS, так это" виртуальный частный сервер " от одного из тех провайдеров, где вы получаете серверы, которые можете создавать/уничтожать по своей прихоти, а затем, после создания, сервер доступен с подключением к удаленному рабочему столу.
Мы получаем эту действительно странную ошибку, и я действительно не вижу способа исправить эту ошибку или предотвратить ее. Кажется, это происходит по прихоти Microsoft, просто когда ей этого хочется. Выполнение мягкой перезагрузки виртуальной машины сервера с веб-сайта облачной панели управления, по-видимому, исправляет ошибку, по крайней мере временно, до тех пор, пока ошибка "не почувствует, что хочет повториться."
Ошибка показана на следующем рисунке:
Изображение Ошибки [^]
Как только происходит ошибка, мой сотрудник выбрасывается из системы. Сотрудник также не может повторно подключиться, пока кто-то на самом деле не пошел вперед и не перезагрузил машину (если только кто-то не знает менее ресурсоемкий/трудоемкий способ устранения проблемы). Однако в настоящее время никто в нашей компании не получает уведомления раньше, чем через несколько часов, что означает, что сотрудник не продуктивен, и мы теряем деньги.
Я хочу как-то обойти это. Что я хотел бы сделать, так это написать программу на C# для установки на сервер, которая определит, когда произошло это состояние ошибки, в частности, с точки зрения сервера, а затем произведет мягкую перезагрузку.
У кого-нибудь есть идеи о том, как программно обнаружить эту ошибку?
Брайан Харт
Что я уже пробовал:
Я гуглил и искал. Я подумал о следующем:
Мониторинг журнала событий.
Мой сотрудник сообщил мне дату/время вплоть до минуты, когда произошла эта ошибка, и есть таблица базы данных, которая обновляется каждый раз, когда сотрудник что-то делает, и в ней говорится, что последнее действие произошло в системе в 12:52:28 вечера 3/30/2017. Итак, хорошо, я вхожу в журнал событий компьютера и ищу любые события ошибок в это время. Я заглянул в журналы системы, настройки, Windows и приложений. Кроме того, я также специально заглянул в журналы для подключения к удаленному рабочему столу. Нада.
Прикрепление
SystemEvents.SessionSwitch
событие.Я видел сообщение на StackOverflow об этом. Это, в принципе, сработало бы, чтобы обработать это событие и проверить на e.Reason какое-то конкретное значение, которое указывает на то, что удаленный сеанс был отключен. Однако это немного слишком обобщенно для целей, описанных выше, поскольку в принципе это означало бы, что мягкая перезагрузка будет выполняться каждый раз, когда сотрудник даже просто нажимает кнопку "X" в окне RDP. Это было бы неуместно для нашего приложения.
Выше приведены две основные вещи, которые приходят мне на ум, поскольку они могут помочь мне написать программу на C# для решения этой проблемы (либо уведомив наш ИТ-отдел о возникновении конкретной ошибки, либо, как я уже сказал, автоматически выполнив мягкую перезагрузку машины).
Однако по вышеприведенным причинам два потенциальных решения имеют проблемы, которые, по-видимому, препятствуют написанию эффективного решения. Я искал в google и буду продолжать это делать, но я открыт для любых предложений.