ПОЛУЧЕНИЕ запроса дублируется в IIS 8.5

#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-файлов.