Процесс не может получить доступ к файлу, потому что он используется другим процессом при выполнении веб-развертывания - PullRequest
3 голосов
/ 30 декабря 2011

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

Кто-нибудь может сказать мне, как принудительно удалить старый при автоматическом развертывании?Я должен сделать IISRESET для развертывания.Спасибо Ашвани

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Вам нужно будет выполнить полное iisreset /stop перед попыткой развертывания, затем, после успешного развертывания, перезапустите сервер с помощью iisreset /start.

В качестве альтернативы, если у вас есть другие веб-сайты на том же хосте, попробуйте самостоятельно остановить пул приложений, развернуть и перезапустить приложение.бассейн.Вы можете использовать appcmd для этого:

  • appcmd list apppool перечисляет ваши пулы приложений
  • appcmd stop apppool <name> останавливает пул
  • appcmd start apppool <name> запускает пул

Чтобы сделать это из MSBuild, попробуйте пакет расширения .

0 голосов
/ 22 апреля 2015

Если файл, указанный вами для FlatfileTraceListener, предназначен только для чтения, прослушиватель трассировки не записывает данные в файл и исключений не возникает.Убедитесь, что атрибуты файла установлены для чтения / записи.Когда вы используете класс FlatFileTraceListener для записи информации журнала в файл, блок приложения блокирует файл, пока приложение не закроется.Можно открыть и прочитать файл, но вы не можете переместить или удалить файл журнала, пока не закроете приложение.

https://msdn.microsoft.com/en-us/library/ff648115.aspx

...