Как уменьшить потребность в IISRESET для разработки веб-приложения ASP.NET в IIS 5.1

У меня есть проект веб-приложения на моем ПК с WinXP и, следовательно, IIS 5.1. Кажется, что изменения, которые я делаю на этом сайте, вступают в силу только после того, как я выполню IISRESET. То есть я делаю изменение источника, перестраиваю проект и затем запускаю без отладки (или с отладкой). Вновь измененный код не является "видимым" или действующим, если я не вмешиваюсь в IISRESET.

Кстати, вкладка "Интернет" на экране "Свойства" для проекта веб-приложения настроена для использования локального веб-сервера IIS в URL- адресе проекта: http://localhost/myVirtualDirectory

...

но я заметил ту же проблему при использовании VStudio Dev Server (то есть я должен остановить его, посетив область панели задач, чтобы увидеть, как мои исходные изменения вступили в силу).

Это то, что я могу изменить?

РЕДАКТИРОВАТЬ ОБНОВЛЕНИЕ:

Просто хочу прояснить это, если это возможно. Два ответа расходятся ниже; не уверен, как двигаться вперед. Кто-то утверждает, что этого следовало ожидать (слабость IIS 5.1, которая, в свою очередь, является лучшим вариантом, который может предоставить WinXP). Другой утверждает, что это не ожидаемое поведение (и я склонен согласиться, так как это первое, что я включил это на ту же старую платформу разработки WinXP, которая у меня была долгое время). Я подозреваю, что это может быть что-то "глубоко внутри" веб-приложения Visual Studio 2008, которое было обновлено до этой новой IDE из VStudio 2002 (ASP.NET 1.1). Я пытался добавить комментарий / вопросы по каждому пути ответа. Благодарю.

7 ответов

Это не нормальное поведение вообще. ASP.NET должен автоматически перезагрузить любые сборки, которые вы положили в каталог bin. Если вы используете динамическую компиляцию, она также должна собирать новый код в файлах кода.

Во-первых, убедитесь, что вы используете правильную директиву CodeFile или CodeBehind. CodeFile для динамической компиляции.

Если у вас есть проект веб-приложения и вы скомпилировали исходные файлы.cs в DLL, то убедитесь, что ваш проект помещает DLL в правильный каталог... который находится в /[ApplicationRoot]/bin.

Это не изменится, но вы можете сделать IISReset частью вашего скрипта после сборки.

Я должен сказать, что это не стандартное поведение. Я уже некоторое время занимаюсь разработкой в ​​VS2005 и использую XP, 2003 и более поздние системы. Но даже на XP у меня никогда такого не было.

В прошлом году двое из моих коллег все еще использовали XP для разработки веб-приложения, в котором мы работали. И мы работали над EXACT той же кодовой базой, которая использовалась в репозитории SVN. У одного из них была та же проблема у вас есть, и мы не смогли найти решение, и мы просто оставили его как есть.. Машина другого коллеги работала абсолютно нормально (оба на одинаковом оборудовании)

Это печальная история, потому что в конце концов его IIS стал настолько испорченным, что ему пришлось вместо этого использовать веб-сервер VS в течение нескольких месяцев, пока системный администратор не согласился переустановить Windows в своей коробке:)

Мораль этой истории? Я думаю, что ваша установка Windows / IIS испорчена... Попробуйте получить последние обновления от MS, и если ничего не поможет - я бы порекомендовал сделать чистую установку.. Извините, но надеюсь, что это поможет...

Вы можете проверить раздел реестра, расположенный здесь:

HKLM \ Software \ Microsoft \ ASP.NET \ FCNMode

Если вы видите этот раздел реестра, убедитесь, что он установлен на 0 или больше 2. Если он установлен на 1, ASP.NET не будет получать уведомление об изменении файла при сборке, и вы будете испытывать точные симптомы, которые вы описываете. Всякий раз, когда вы создаете решение для веб-приложения, оно должно перезапускаться. Если этого не происходит, это может быть ответом.

Возникла такая же проблема и удалось найти странный ответ.

Проблема: когда исходный код редактируется, а IIS не хочет обновлять редактирование.

В настройках проекта в Интернете я изменил серверы на использование сервера разработки Visual Studio вместо использования веб-сервера IIS.

Затем запустил VS Development Server с F5, чтобы я мог видеть изменения после редактирования SourceCode. Я оставил настройки, но затем перешел на свою домашнюю страницу, используя сервер IIS. Теперь изменения обновляются, как и должно быть.

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

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

Я сталкивался с подобными проблемами в прошлом. То, что всегда будет вызывать перезагрузку приложения, - это ЛЮБОЕ изменение в файле web.config.

Просто вставьте пустую строку в конце и сохраните ее, и веб-приложение будет перезагружено при следующей загрузке страницы. Для моих целей я создал скрипт, который делает это после каждой сборки. Звучит просто, но всегда работает.

Другие вопросы по тегам