Динамически генерируемый файл на сервере не освобождает дескриптор процесса .NET в Windows Server 2003 - PullRequest
0 голосов
/ 24 апреля 2009

Я создал веб-приложение, которое пользователь может запросить отчет, который создается на сервере и отправляется обратно клиенту. Процесс работает нормально и отправляет файл обратно клиенту, однако мы не можем открыть файл. Дальнейшие исследования показывают, что процесс на сервере все еще имеет дескриптор файла в пуле приложений IIS.

Вот странная часть:

  1. .NET-код вызывает метод Close (), который закрывает файл и основной поток.
  2. Эта проблема возникает только на наших производственных серверах. В разработке и тестировании работает нормально.
  3. Мы попытались изменить множество различных настроек на сервере и в IIS
  4. Мы попробовали много разных идей, чтобы заставить его работать на рабочем сервере, но пока безуспешно.

Что может быть причиной этого? Мы работаем под управлением Windows Server 2003, IIS 6. Пожалуйста, помогите !!

Ответы [ 3 ]

1 голос
/ 24 апреля 2009

На сервере запущено антивирусное программное обеспечение? Возможно, он сканирует файл, поскольку это новый файл.

Я повторяю комментарий от PITADeveloper выше о Dispose. Далее я скажу, что вы должны убедиться, что каждый созданный вами объект, реализующий IDisposable, имеет вызов Dispose. Если вы создаете его, вы должны утилизировать его:

using (var resource = ResourceType.Create())
{
    // Use the resource
}   // resource.Dispose called here even if your code throws an exception
0 голосов
/ 24 апреля 2009

Если вы отправляете файл по HTTP, никакая блокировка сервером не повлияет на возможность открытия файла на клиенте. Вы уверены, что сервер закрывает файл на вашем производственном сервере? Возможно, что-то на вашем рабочем сервере не позволяет веб-приложению полностью сгенерировать файл.

0 голосов
/ 24 апреля 2009

Вы говорите, что «.NET-код вызывает Close ()» в файле. Вызывает ли он также Dispose () для любых ресурсов, используемых для создания файла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...