none
iis держит файлы :( RRS feed

  • Вопрос

  • можно ли сделать так что бы iis блокировал файлы только когда выполняется запрос ? то есть добиться того что бы можно было менять файлы не остонавливая пул приложений ...
    18 августа 2011 г. 14:59

Ответы

  • Разработчик скорее всего прав. В IIS по умолчанию включена настройка system.web/hostingEnvironment/shadowCopyBinAssemblies. При выставлении этого параметра в true IIS использует не напрямую файлы dll из папки bin, а копирует их во временную папку. Оригинальные файлы в bin при этом не блокируются.

    Проверьте файл web.config своего приложения. Если в нем нет упоминания shadowCopyBinAssemblies - то добавьте секцию вида:

    <system.web>
      <hostingEnvironment 
    		shadowCopyBinAssemblies="true" 
    	/>
    </system.web>
    

    Вот статья с описанием этого куска конфигурации: http://msdn.microsoft.com/ru-ru/library/ms228159.aspx

    Если проблемы блокирования возникают не на файлах dll в папке bin - то разработчик не прав, и это просто его баг :)


    My blog | My Favorite Project
    • Предложено в качестве ответа Dmitry DavydovModerator 30 августа 2011 г. 10:31
    • Помечено в качестве ответа Roman Zhukov 30 августа 2011 г. 10:34
    25 августа 2011 г. 13:39
  • > получилось перезаписать файлы :), но до первого нового обращение к приложению

    все правильно. приложение запустилось в момент обращения.

    > мне же нужно что бы файлы заливались туда-сюда без вмешательства в работу iis

    можно сделать загрузчик, который по ftp подключится к серверу и:
    - в корне сайта создаст файл app_offline.htm (с текстом: ведутся тех.работы) - в этот момент приложение остановится.
    - загрузит новый файл вместо х-файла.
    - удалит app_offline.htm

    приложение запустится при первом же обращении.

    • Предложено в качестве ответа Malobukv 25 августа 2011 г. 12:35
    • Помечено в качестве ответа Roman Zhukov 30 августа 2011 г. 10:34
    25 августа 2011 г. 11:56
  •  Разработчик данного чуда сказал, что это все можно решить "правильной" настройкой iis

    если разработчик приложения подзабыл закрывать файлы после их обработки, то настройка IIS тут ничем не поможет. Воспользуйтесь утилитой Process Explorer из пакета Windows Sysinternals для определения процессов, которые удерживают файл, подлежащий замене. И, если это действительно рабочий процесс IIS, то, боюсь, что файл блокируется Вашим приложением.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    • Предложено в качестве ответа Dmitry DavydovModerator 30 августа 2011 г. 10:29
    • Помечено в качестве ответа Roman Zhukov 30 августа 2011 г. 10:34
    23 августа 2011 г. 12:14
    Модератор

Все ответы

  • менять файлы не остонавливая пул приложений ...

    а почему у Вас возникает необходимость стопить пул? Какие-то ошибки доступа к файлам или дележка между процессами? поподробнее бы

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

    Understanding ASP.NET Dynamic Compilation


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    19 августа 2011 г. 12:21
    Модератор
  • Есть приложение, оно использует файлы ... появилась острая необходимость подменять файлы когда нужно, если не останавливать пул приложений, то пишет что файлы заняты другим переложением и не дает их заменить... при этом ни каких обращений через веб нету

    ЗЫ

    Разработчик данного чуда сказал, что это все можно решить "правильной" настройкой iis и свалил в Канаду =)


    19 августа 2011 г. 12:28
  •  Разработчик данного чуда сказал, что это все можно решить "правильной" настройкой iis

    если разработчик приложения подзабыл закрывать файлы после их обработки, то настройка IIS тут ничем не поможет. Воспользуйтесь утилитой Process Explorer из пакета Windows Sysinternals для определения процессов, которые удерживают файл, подлежащий замене. И, если это действительно рабочий процесс IIS, то, боюсь, что файл блокируется Вашим приложением.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    • Предложено в качестве ответа Dmitry DavydovModerator 30 августа 2011 г. 10:29
    • Помечено в качестве ответа Roman Zhukov 30 августа 2011 г. 10:34
    23 августа 2011 г. 12:14
    Модератор
  • > Есть приложение, оно использует файлы ...

    приложение - сайт на ASP.NET?

    23 августа 2011 г. 22:58
  •  Разработчик данного чуда сказал, что это все можно решить "правильной" настройкой iis

    если разработчик приложения подзабыл закрывать файлы после их обработки, то настройка IIS тут ничем не поможет. Воспользуйтесь утилитой Process Explorer из пакета Windows Sysinternals для определения процессов, которые удерживают файл, подлежащий замене. И, если это действительно рабочий процесс IIS, то, боюсь, что файл блокируется Вашим приложением.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    ничего не нашел при помощи данной утилиты :(
     

    25 августа 2011 г. 10:26
  • > Есть приложение, оно использует файлы ...

    приложение - сайт на ASP.NET?

    да, по идее

    ЗЫ

    расширение у файлов aspx

    25 августа 2011 г. 10:26
  • попробуйте открыть web.config и просто его сохранить. или в /bin создайте, например, текстовый файл.
    после этого попытайтесь заменить необходимые вам файлы.

    25 августа 2011 г. 10:53
  • попробуйте открыть web.config и просто его сохранить. или в /bin создайте, например, текстовый файл.
    после этого попытайтесь заменить необходимые вам файлы.

    я не об программном коде самого сайта, а о файлах которые использует приложение ... мне кажется что меня где то  н****и/обманули и все дело в самом преложении, но тогда почему Process Explorer ничего не показал :(

     

    ЗЫ

    программный код "на лету" меняется 

    25 августа 2011 г. 11:04
  • давайте уточним ситуацию: у вас есть файл(ы), далее х-файл.
    вы хотите с помощью своей программы менять х-файл, но х-файл открыт сайтом-asp.net-приложением, поэтому х-файл заменить не удается. только если перезапустить пул приложений, в котором работает сайт-asp.net-приложение.

    вопрос: пробовали перезапустить само приложение? это можно сделать через iis или ... см. в моем предыдущем сообщении.

    • Предложено в качестве ответа Malobukv 25 августа 2011 г. 12:34
    • Отменено предложение в качестве ответа Malobukv 25 августа 2011 г. 12:35
    25 августа 2011 г. 11:28
  • давайте уточним ситуацию: у вас есть файл(ы), далее х-файл.
    вы хотите с помощью своей программы менять х-файл, но х-файл открыт сайтом-asp.net-приложением, поэтому х-файл заменить не удается. только если перезапустить пул приложений, в котором работает сайт-asp.net-приложение.

    вопрос: пробовали перезапустить само приложение? это можно сделать через iis или ... см. в моем предыдущем сообщении.

    пробовал и ... получилось перезаписать файлы :), но до первого нового обращение к приложению

    все дело в приложении?

    ЗЫ

    мне же нужно что бы файлы заливались туда-сюда без вмешательства в работу iis, так как этим заняты рядовые пользователи и у них нету доступа к таким вещам...

    25 августа 2011 г. 11:41
  •  Разработчик данного чуда сказал, что это все можно решить "правильной" настройкой iis

    если разработчик приложения подзабыл закрывать файлы после их обработки, то настройка IIS тут ничем не поможет. Воспользуйтесь утилитой Process Explorer из пакета Windows Sysinternals для определения процессов, которые удерживают файл, подлежащий замене. И, если это действительно рабочий процесс IIS, то, боюсь, что файл блокируется Вашим приложением.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    ничего не нашел при помощи данной утилиты :(
     


    Там есть еще утилита Handle - ей посмотрите какой процесс блокирует файл.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    25 августа 2011 г. 11:51
    Модератор
  • > получилось перезаписать файлы :), но до первого нового обращение к приложению

    все правильно. приложение запустилось в момент обращения.

    > мне же нужно что бы файлы заливались туда-сюда без вмешательства в работу iis

    можно сделать загрузчик, который по ftp подключится к серверу и:
    - в корне сайта создаст файл app_offline.htm (с текстом: ведутся тех.работы) - в этот момент приложение остановится.
    - загрузит новый файл вместо х-файла.
    - удалит app_offline.htm

    приложение запустится при первом же обращении.

    • Предложено в качестве ответа Malobukv 25 августа 2011 г. 12:35
    • Помечено в качестве ответа Roman Zhukov 30 августа 2011 г. 10:34
    25 августа 2011 г. 11:56
  •  Разработчик данного чуда сказал, что это все можно решить "правильной" настройкой iis

    если разработчик приложения подзабыл закрывать файлы после их обработки, то настройка IIS тут ничем не поможет. Воспользуйтесь утилитой Process Explorer из пакета Windows Sysinternals для определения процессов, которые удерживают файл, подлежащий замене. И, если это действительно рабочий процесс IIS, то, боюсь, что файл блокируется Вашим приложением.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    ничего не нашел при помощи данной утилиты :(
     


    Там есть еще утилита Handle - ей посмотрите какой процесс блокирует файл.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    find Handle or DLL, оно? я этим и искал
    25 августа 2011 г. 12:07
  • > получилось перезаписать файлы :), но до первого нового обращение к приложению

    все правильно. приложение запустилось в момент обращения.

    > мне же нужно что бы файлы заливались туда-сюда без вмешательства в работу iis

    можно сделать загрузчик, который по ftp подключится к серверу и:
    - в корне сайта создаст файл app_offline.htm (с текстом: ведутся тех.работы) - в этот момент приложение остановится.
    - загрузит новый файл вместо х-файла.
    - удалит app_offline.htm

    приложение запустится при первом же обращении.

    хотите сделать загрузчик и поделиться ?
    25 августа 2011 г. 12:08
  • > хотите сделать загрузчик и поделиться ?

    загрузчик есть для моих задач. у вас своя специфика. оставьте свой мейл.

    25 августа 2011 г. 12:17
  • > хотите сделать загрузчик и поделиться ?

    загрузчик есть для моих задач. у вас своя специфика. оставьте свой мейл.

    sonniy@ukr.net
    25 августа 2011 г. 12:39
  • Разработчик скорее всего прав. В IIS по умолчанию включена настройка system.web/hostingEnvironment/shadowCopyBinAssemblies. При выставлении этого параметра в true IIS использует не напрямую файлы dll из папки bin, а копирует их во временную папку. Оригинальные файлы в bin при этом не блокируются.

    Проверьте файл web.config своего приложения. Если в нем нет упоминания shadowCopyBinAssemblies - то добавьте секцию вида:

    <system.web>
      <hostingEnvironment 
    		shadowCopyBinAssemblies="true" 
    	/>
    </system.web>
    

    Вот статья с описанием этого куска конфигурации: http://msdn.microsoft.com/ru-ru/library/ms228159.aspx

    Если проблемы блокирования возникают не на файлах dll в папке bin - то разработчик не прав, и это просто его баг :)


    My blog | My Favorite Project
    • Предложено в качестве ответа Dmitry DavydovModerator 30 августа 2011 г. 10:31
    • Помечено в качестве ответа Roman Zhukov 30 августа 2011 г. 10:34
    25 августа 2011 г. 13:39
  • Там есть еще утилита Handle - ей посмотрите какой процесс блокирует файл.
    ничего не нашел при помощи данной утилиты :(

    поэкспериментируйте с маской, по которой ищете заблокированный файл; уж то, что кто-то его лочит сомнений точно нет - он там должен быть

    можно сделать загрузчик, который по ftp подключится к серверу и:

    - в корне сайта создаст файл app_offline.htm (с текстом: ведутся тех.работы)

    - в этот момент приложение остановится.

    - загрузит новый файл вместо х-файла.

    - удалит app_offline.htm

    неплохой workaround, решит проблему работы с контентом рядовым пользователям, но вот доступность приложения подсократит

    Если проблемы блокирования возникают не на файлах dll в папке bin - то разработчик не прав, и это просто его баг :)

    не, с исходным кодом (библиотеками) все в порядке, т.к.

    ЗЫ программный код "на лету" меняется

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


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    25 августа 2011 г. 15:06
    Модератор
  • Вы файл какой именно меняете? Полный путь относительно корня сайта скажите. Я думаю, что вы не то что надо делаете.

    12 сентября 2011 г. 8:30