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

У меня есть проект веб-приложения на моем компьютере разработчика под управлением 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 ]

4 голосов
/ 17 февраля 2010

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

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

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

1 голос
/ 29 апреля 2010

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

HKLM \ Software \ Microsoft \ ASP.NET \ FCNMode

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

1 голос
/ 20 апреля 2010

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

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

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

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

1 голос
/ 17 февраля 2010

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

0 голосов
/ 14 июля 2010

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

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

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

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

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

0 голосов
/ 20 апреля 2010

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

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

0 голосов
/ 19 апреля 2010

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

...