Ошибка компиляции после успешной публикации веб-приложения ASP.NET (4.0) - PullRequest
3 голосов
/ 26 января 2012

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

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

Страницы, которые не работают на веб-сервере, ранее работали на веб-сервере, не были изменены для этой публикации и продолжают нормально работать в отладке Visual Studio 2010.

Я перезапустил пул приложений, перезапустил веб-сайт и перезагрузил сервер.

Ошибка в наших журналах ошибок:

GAE:: System.Web.HttpException (0x80004005): The file /XXXX.aspx has not been pre-compiled, and cannot be requested.     
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)     
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)     
at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)     
at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)     
at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)     
at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

РЕДАКТИРОВАТЬ: Я скопировал исходные файлы aspx и cs для одной из страниц с ошибками (переименование класса) и повторно опубликовал его решение. Новая страница работает бок о бок с ошибочным аналогом.

Ответы [ 4 ]

4 голосов
/ 27 января 2012

Эта ошибка может быть красной сельдью и обычно маскирует настоящую ошибку.

1-я проверка прав доступа к приложению IIS, физическому каталогу и соответствующему файлу верна.

Если это не права доступа, установите для пользовательских ошибок значение RemoteOnly только на веб-сервере и повторите публикацию. В .net 4 опубликуйте приложение, отметив следующие опции: «разрешить обновляемый предварительно скомпилированный сайт» и «использовать фиксированные соглашения об именах и одностраничные сборки»

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

Надеюсь, это поможет вам решить вашу проблему - удачи!

1 голос
/ 02 ноября 2018

Я столкнулся с той же проблемой с VS2017 и приложением, которое уже долгое время работало.

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

После раскомментирования профилей узлов вПриложение web.config было запущено и работает.

При развертывании мы также удалили все файлы, кроме APP_DATA и web.config.

0 голосов
/ 10 апреля 2013

У меня была такая же проблема.

Некоторые страницы выдают ошибку при попытке открыть после публикации.

Одно из решений, которое у меня сработало, было ... Когда я проверял aspx-файлы тех, кто показывает ошибки, имел CodeFile, а не CodeBehind ...

Я перешел с CodeFile на CodeBehind, и он работал нормально. (Не знаю, является ли это причиной того, что CodeBehind один доступен в каталоге bin. Я новичок, и, возможно, эта причина не верна. Пожалуйста, исправьте меня, если я ошибся)

Но проблема в том, что на локальном хосте определенные файлы выдают ошибку, когда они остаются как CodeBehind.

0 голосов
/ 26 января 2012

Вероятно, файл или IO связаны. Вы скопировали все файлы, а не только двоичные файлы? Вы можете попробовать удалить все старые файлы (в первую очередь, резервное копирование), чтобы это не было проблемой защиты от записи или безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...