Предварительно скомпилированный ASP.NET веб-приложение:ошибка “System.Web.HttpException файл filename.aspx не был предварительно скомпилирован и не может быть запрошен”.

StackOverflow https://stackoverflow.com/questions/413221

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Я скомпилировал проект, который создал файлы, необходимые для развертывания.Я скопировал полученные папки (bin, статические файлы и все папки с заполнителями 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 для анализа сборки).
Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top