У меня есть веб-сайт электронной коммерции asp.net 4 на моем веб-сервере Windows Server 2008 R2. Я загружаю обновленную DLL в папку / bin и, конечно же, сайт перекомпилируется. Это проект веб-сайта, а не веб-приложение. В большинстве случаев сайт не восстанавливается, я получаю сообщение об ошибке службы недоступности (я думаю, 503). Мне нужно подключиться к серверу по протоколу RDP и выполнить IISRESET, чтобы восстановить его. К сожалению, при этом происходит цикл всего на сервере.
Почему это происходит и как это предотвратить? Как я могу успешно перекомпилировать сайт, когда папка / bin изменяется и у IIS нет тайм-аута или чего-то еще, что вызывает эту ошибку?
Спасибо.
Это состояние гонки между ASP.NET и развертыванием. При прикосновении к первому файлу или папке приложения произойдет перезапуск домена приложения, который будет происходить в быстрой последовательности во время развертывания. Если он завершится не по порядку, ASP.NET может быть отключен и оставаться в неисправном состоянии. Это не происходит с большинством приложений, но может с некоторыми, особенно с большими сайтами, находящимися под высокой нагрузкой во время развертывания.
Решение состоит в том, чтобы «прикоснуться» к вашему файлу web.config после того, как все будет готово. Это приведет к перезапуску домена приложения только для вашего сайта и не потребует сброса на всем сервере. На ощупь просто загрузите web.config еще раз после завершения развертывания.
Другой вариант - использовать App_Offline.htm во время развертывания.
Вот пара видеоблогов, которые я выпустил по AppDomains и локализованной переработке, которые могут вам пригодиться:
Вы регистрировали dll? Regsvr32 и путь к DLL. Если он 32-разрядный, вы можете использовать regsvr32 в папке syswow64. Еще вы можете включить отслеживание неудачных запросов в IIS, чтобы точно узнать, где и в чем проблема. Надеюсь это поможет