Проверка и сброс системных часов при ASP.NET запуск веб-сайта?

#c# #asp.net #windows #virtual-machine

#c# #asp.net #Windows #виртуальная машина

Вопрос:

У меня есть ASP.NET приложение, размещенное на ферме виртуальных серверов с проблемами во времени. Симптомы заключаются в том, что при запуске или перезагрузке серверов они часто показывают плохое системное время (возможно, часы простоя).

(Очевидно, лучшим ответом было бы решить системную проблему, но в настоящее время это вне моего контроля …)

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

Технические предположения: * ASP.NET 4.0 * Windows 2008 * Полные права локального администратора на сервере

Комментарии:

1. Я не думаю, что приложение является подходящим местом для этого. Я думаю, что есть инструменты, доступные для синхронизации времени. Может быть, служба времени Windows?

2. Полностью согласен, что это «правильный» способ справиться с этим. Я просто пытаюсь найти обходной путь в плохо администрируемой среде…

3. Имейте в виду, что может быть странное поведение из-за изменения системных часов во время ASP.NET приложение запущено. Например, изменение часов может непреднамеренно привести к превышению времени ожидания для пула приложений, что приведет к снижению производительности w3wp.exe процесс. Будьте осторожны.

Ответ №1:

Возможно, вы сможете сделать это с помощью WMI (инструментарий управления Windows). Хотя у меня нет личного опыта в этом, существует множество примеров. Для запуска:

  1. Классы в System.Management помогут вам запросить WMI из .NET framework
  2. Пример MSDN: подключение к удаленному компьютеру для выполнения запроса WMI
  3. Сценарии WMI: задачи даты / времени
  4. Класс Win32_LocalTime
  5. Использование языка запросов обновления WMI для обновления системной информации

Надеюсь, это поможет вам двигаться в правильном направлении.

Ответ №2:

Я не думаю, что приложение является подходящим местом для сброса системного времени. Если я не ошибаюсь, служба времени Windows может справиться с этим:

http://www.windowsnetworking.com/articles_tutorials/configuring-windows-time-service.html

Комментарии:

1. Проблема в том, что злые силы, находящиеся вне моего контроля, настраивают сервер и запускают на нем мое приложение. Моя первая точка контакта — при запуске приложения… Я мог бы просто запустить приложение, если часы слишком сильно вышли из строя, но я бы «хотел» иметь возможность «автоматически» устранить проблему без запуска сеанса RDP на сервере…

2. Это сложно… можете ли вы создать службу для запуска на серверах?