У меня есть скрипт powershell, который запускает консольное .exe-приложение.Консольное приложение запускает веб-сервис.Веб-сервису требуется около 10 минут для выполнения задачи.
В производственной среде сценарий powershell завершается примерно через 130 секунд, и задача веб-службы завершается.Это основная проблема!Все отлично работает в локальной среде.
Powershell версии 2 работает как локально, так и в рабочем режиме.
При запуске сценария powershell из консоли.Локально сценарий powershell печатает возвращаемое значение консольного приложения.В производстве ничего не выводится на экран.Он просто отображает новую командную строку.
Задача может быть запущена асинхронно с веб-страницы в производственной среде.
Все файлы кода приложения / конфигурации одинаковы для обоих локальных /производственные среды.
Единственное, что имеет смысл, - это сценарий powershell, это тайм-аут и завершение консольного приложения, которое, в свою очередь, завершает работу веб-службы.скрипты.Но тот факт, что он работает локально, указывает на проблему с настройками по умолчанию для PowerShell.
На этой странице описаны параметры тайм-аута: http://www.ehow.com/how_12026004_set-timeout-powershell.html
Но запуск: Dir WSMan: \ localhost \ shell приводит кОшибка пути не найдена при запуске в рабочей среде.
Ниже приведен Powerscript, но удалена вся конфиденциальная информация.Успешное письмо отправляется после запуска скрипта.
# attempt to exe file. iex is an alias for the invoke-expression cmd
iex "Reminder.exe"
$smtpServer = ""
$fromAddress = ""
$toAddress = ""
$subject = "SUCCESS"
$msgBody = ""
# $? lets us know if the previous command was successful or not
# $LASTEXITCODE gives us the exit code of the last Win32 exe execution
if (!$? -OR $LASTEXITCODE -gt 0)
{
$subject = "FAIL"
}
$smtpClient = new-object Net.Mail.SmtpClient($smtpServer)
$smtpClient.Credentials = $senderCreds
$smtpClient.Send($fromAddress,$toAddress,$subject,$msgBody)