#iis #asp.net-web-api #get-request
#iis #asp.net-web-api #получение запроса
Вопрос:
У меня есть веб-API, в котором есть DownloadController. Этот контроллер вызывает другой заводской метод, и этот заводской метод вызывает EXE-файл и ожидает, пока этот EXE-файл завершит свое выполнение.
Я разместил это на Windows Server 2012 R2, который имеет IIS 8.5.
Я делаю запрос GET к этому контроллеру веб-api, как показано ниже:
http://myapplication.myserver.com/api/download?contenttype=xxxxxxxxxx
web Api:
// GET api/download
public HttpResponseMessage Get()
{
...............
CreateAndGetZipFile();
}
Factory Method:
public void CreateAndGetZipFile()
{
...............
ZipFileCreatorExe.Start();
ZipFileCreatorExe.WaitForExit();
}
Теперь, когда я делаю запрос GET для загрузки ZIP-файла в VS, он работает как ожидалось и загружает ZIP-файл. Но при размещении в IIS 8.5 на WinServer2012r2.
IIS создает несколько запросов GET и запускает ZipFileCreatorExe несколько раз, и после возврата ZIP-файла несколько экземпляров EXES, запущенных IIS, иногда не завершаются, что фактически делает приложение бесполезным.
Я проверил журналы IIS, и в них четко показано, что выполняются множественные запросы GET. еще одна вещь, которую следует добавить, это то, что каждый запрос GET выполняется через 20 или 30 секунд.
Пожалуйста, помогите.
Комментарии:
1. Если ваш IIS обрабатывает несколько запросов (и вы видите это в журналах), то, возможно, проблема в отправке запроса? Итак, как вы вызываете свой веб-api? Я думаю, IIS получает реальные множественные внешние запросы. Например, если два клиента вызовут этот метод вашего API, это приведет к двум отдельным потокам в IIS и, наконец, к двум запущенным .EXE. Если вы хотите избежать этой ситуации, вам следует изменить свой завод, чтобы запускать только один . На данный момент выполняется.
2. Я почти уверен, что выполняется только один запрос. Запрос выполняется через URL, отправленный по почте, который является прямым запросом GET для ZIP-файлов.