Предварительно скомпилированное веб-приложение ASP.NET: ошибка «Файл исключений System.Web.HttpException filename.aspx не был предварительно скомпилирован и не может быть запрошен». - PullRequest
5 голосов
/ 05 января 2009

Я создал проект веб-развертывания, используя шаблон для Visual Studio 2008 для веб-приложения ASP.NET 3.5 (не веб-сайта).

Я скомпилировал проект, который создал файлы, необходимые для развертывания. Я скопировал полученные папки (bin, static файлы и все папки с заполнителями aspx и т. Д.) На промежуточный сервер, где я хотел протестировать приложение.

Если я не отмечу опцию «Разрешить обновление этого скомпилированного сайта» , я получаю это сообщение об ошибке на каждой странице, загружаемой в браузер:

System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, 
and cannot be requested.

последняя строка в трассировке стека:

System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(
  VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, 
  Boolean allowBuildInPrecompile) +8756366

Если я проверю эту опцию, все в порядке (я думаю, потому что фактические aspx / ascx все еще там в их первоначальном виде). ​​

Есть идеи, что мне здесь не хватает? Есть какие-то настройки или специальные файлы, которые я забыл скопировать?

Спасибо!

Примечания:

  • У меня есть несколько ссылок на сторонние сборки
  • Я проверил папку bin на промежуточном сервере. Он содержит предварительно скомпилированную сборку, которая содержит все классы (я использовал Reflector для анализа сборки).

Ответы [ 2 ]

7 голосов
/ 05 января 2009

Все файлы ASPX должны содержать только

Это файл маркера, созданный инструмент предварительной компиляции, и должен не удаляется!

Удалите все в папке bin и снова опубликуйте Интернет. Убедитесь, что вы взяли файлы из каталога, в котором вы выполнили публикацию.

Убедитесь, что вы скопировали .compiled файлы, содержащиеся в папке bin.

1 голос
/ 05 января 2009

Для записи я забыл скопировать эти ".компилированные" файлы ( Документация MSDN: Обработка файлов во время прекомпиляции ASP.NET ):

Для исполняемых файлов в ASP.NET Web приложение, компилятор сборок и файлы с именем .compiled расширение. Название сборки генерируется компилятором. .compiled файл не содержит исполняемый код Вместо этого он содержит только информация о том, что ASP.NET нужно найти подходящий сборка.

После того, как предварительно скомпилированное приложение развернут, ASP.NET использует сборки в папке Bin для обработки запросов. Вывод прекомпиляции включает в себя Файлы .aspx или .asmx в качестве заполнителей для страниц. Файлы-заполнители не содержат код Они существуют только для предоставить способ вызова ASP.NET для конкретный запрос страницы и так, что файл разрешения могут быть установлены для ограничения доступ к страницам.

...