Окно доступа при отсутствии графического интерфейса
Создание решения для мониторинга ERP в C#, цель состоит в том, чтобы проверить, когда приложение больше не доступно. Единственный способ - открыть его окно; он не открывается и показывает всплывающую ошибку, если это так.
Мой код работает, но после публикации на сервере IIS он больше не работает. Окно не открывается, а ERP, по-видимому, открывается в фоновом режиме (без графического интерфейса). Сервер IIS настроен на использование моей учетной записи пользователя.
Может кто-нибудь объяснить, что я сделал не так или совет как решить эту проблему? Скриншот диспетчера задач:
Мой код:
private static bool IsDown(this NST nstObject)
{
bool L_Break_Loop = false;
Console.WriteLine("Country being processed : " + nstObject.Trigram);
int L_Launcher_Handle = AutoItX.RunAs("MYUSERID", "COMPANYDOMAIN", "PASSWORD", AutoItX.SW_SHOW, OutputFileLocation + "//" + nstObject.Trigram + ".cmd", "");
System.IO.File.WriteAllText(OutputFileLocation + "//ProcessNav.txt", "Worked : " + L_Launcher_Handle.ToString());
AutoItX.WinGetHandle("Microsoft Dynamics NAV"); // Getting Navision splash screen
while (AutoItX.WinExists("Microsoft Dynamics NAV") == 0)
{
AutoItX.WinGetHandle("Microsoft Dynamics NAV");
}
DateTime L_DateTime_Window_Appeared = DateTime.Now;
while (!L_Break_Loop)
{
AutoItX.WinGetHandle("Microsoft Dynamics NAV"); // Getting Navision splash screen
if (DateTime.Now > L_DateTime_Window_Appeared.AddSeconds(60) && AutoItX.WinExists("Role Center") != 1) // If timeout reached + role center doesn't exist
{
L_Break_Loop = true;
break;
}
else if (AutoItX.WinExists("Role Center") == 1) // If role center appeared
{
L_Break_Loop = true;
break;
}
}
if (AutoItX.WinExists("Role Center") == 1) // Role Center found
{
Close_Window("Role Center");
Console.WriteLine("NST status : UP");
return false;
}
else if (AutoItX.WinExists("Role Center") != 1) // Role Center not found
{
Close_Window("Microsoft Dynamics NAV"); // In case of NST restarting while script running => NAV opens last moment but script doesn't catch it.
Close_Window("Role Center");
Close_Window("Select Server"); //Closing the select servers page
Console.WriteLine("NST status : DOWN");
return true;
}
return false;
}