При публикации на сайте asp.net выдается «Ссылка на объект не установлена ​​на экземпляр объекта». ошибка - PullRequest
9 голосов
/ 18 февраля 2010

Я сыт по горло этой ошибкой. Я выполнил поиск по всей сети и перепробовал все возможные предложения об этой ошибке, которые я смог найти.

  1. удалить app_code, собрать, добавить файлы обратно, опубликовать. (не работает)
  2. удалить временные файлы asp.net (не работает)

В конце я даже попробовал командную строку и получил следующую трассировку стека.

error ASPRUNTIME: Object reference not set to an instance of an object.

[NullReferenceException]: Object reference not set to an instance of an object.
   at System.Web.Compilation.BuildManager.CopyPrecompiledFile(VirtualFile vfile,
 String destPhysicalPath)
   at System.Web.Compilation.BuildManager.CopyStaticFilesRecursive(VirtualDirect
ory sourceVdir, String destPhysicalDir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.CopyStaticFilesRecursive(VirtualDirect
ory sourceVdir, String destPhysicalDir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.CopyStaticFilesRecursive(VirtualDirect
ory sourceVdir, String destPhysicalDir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileAppInternal(VirtualPath star
tingVirtualDir)
   at System.Web.Compilation.BuildManager.PrecompileApp(VirtualPath startingVirt
ualDir)
   at System.Web.Compilation.BuildManager.PrecompileApp(ClientBuildManagerCallba
ck callback)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCa
llback callback)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCa
llback callback)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuil
dManagerCallback callback, Boolean forceCleanBuild)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuil
dManagerCallback callback)
   at System.Web.Compilation.Precompiler.Main(String[] args)

Я использовал следующую командную строку:

aspnet_compiler.exe -p d:\code\websites\brokerweb -v / d:\code\websites\published -f -c -errorstack -u

Ответы [ 13 ]

8 голосов
/ 24 октября 2014

Эта ошибка возникала у меня, когда я пытался скомпилировать проект с помощью MSBUILD - он прекрасно работал бы в Visual Studio и даже отладил бы в моем локальном браузере. Опция Publish в VS тоже работала. Но командная строка MSBUILD каждый раз приводила к ошибкам проекта.

Мне удалось решить эту проблему в VS 2012, открыв страницы свойств на моем веб-сайте, открыв вкладку «Параметры MSBuild» и сняв флажок «Разрешить обновление этого предварительно скомпилированного сайта», а затем нажав «Сохранить все».

7 голосов
/ 24 марта 2014

У меня был такой же опыт: я убрал сжатый флаг из дерева каталогов решений, снова установил работу компилятора.

5 голосов
/ 30 мая 2012

Обычно это происходит, когда файл *.dll.refresh в каталоге bin указывает на местоположение, которое больше не доступно. Удаление файлов *.dll.refresh должно решить проблему.

4 голосов
/ 19 ноября 2014

Я знаю, что это старый пост, но на всякий случай кто-то найдет это полезным:

Причиной этой проблемы для меня был антивирус McAfee

ASPNETCOMPILER (0,0): ошибка ASPRUNTIME: ссылка на объект не установлена ​​для экземпляра объекта

2 голосов
/ 14 мая 2013

У меня была похожая проблема при компиляции представлений в MVC WebApplication. Исключение NullReferenceException вызывалось только при создании решения внутри VS или MSBuild. Запуск aspnet_compiler.exe из командной строки прошел без ошибок.

error ASPRUNTIME: Object reference not set to an instance of an object.

[NullReferenceException]: Object reference not set to an instance of an object.
   at System.Web.Compilation.DiskBuildResultCache.CacheBuildResult(String cacheKey, BuildResult result, Int64 hashCode, DateTime utcStart)
   at System.Web.Compilation.BuildManager.CacheBuildResultInternal(String cacheKey, BuildResult result, Int64 hashCode, DateTime utcStart)
   at System.Web.Compilation.WebDirectoryBatchCompiler.CacheAssemblyResults(AssemblyBuilder assemblyBuilder, CompilerResults results)
   at System.Web.Compilation.WebDirectoryBatchCompiler.CompileAssemblyBuilder(AssemblyBuilder builder)
   at System.Web.Compilation.WebDirectoryBatchCompiler.<CompileNonDependentBuildProviders>b__0(AssemblyBuilder assemblyBuilder)
   at System.Web.Compilation.CompilationUtil.CompileParallel(ICollection assemblyBuilders, Action`1 action)
   at System.Web.Compilation.WebDirectoryBatchCompiler.CompileNonDependentBuildProviders(ICollection buildProviders)
   at System.Web.Compilation.WebDirectoryBatchCompiler.Process()
   at System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors)
   at System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileWebDirectoriesRecursive(VirtualDirectory vdir, Boolean topLevel)
   at System.Web.Compilation.BuildManager.PrecompileAppInternal(VirtualPath startingVirtualDir, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManager.PrecompileApp(VirtualPath startingVirtualDir, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManager.PrecompileApp(ClientBuildManagerCallback callback, IEnumerable`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths)
   at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback, List`1 excludedVirtualPaths)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback, Boolean forceCleanBuild)
   at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback)
   at System.Web.Compilation.Precompiler.Main(String[] args)

После дня поиска ответов в Интернете и поиска с помощью ProcessMonitor я обнаружил, что это происходит, когда компилятор пытается скомпилировать файл ReportService.svc. Если этот файл был удален или расширение переименовано, все компилируется просто отлично. Очень странное разрешение исправило проблему компиляции SVC файлов. Несколько дней назад я включил сжатие ntfs в этом проекте, чтобы сэкономить место. И это была единственная проблема. Когда атрибут сжатия ntfs был удален из папки веб-сайта, проблема NullReferenceException была решена.

1 голос
/ 18 августа 2014

Удаление всех * .compiled файлов из папки Bin на сайте работает у меня. :)

Эти файлы безопасны для удаления и создаются во время предварительной компиляции. Для получения дополнительной информации проверьте эту MSDN ссылку .

1 голос
/ 31 июля 2014

У меня была похожая проблема. Приложение будет создано и запущено в среде IDE, но не будет опубликовано; выкрикивая на этапе «слияния dll в одну сборку». После исследования aspnet_merge.exe я обнаружил, что проблема была решена путем снятия флажка «emit debug information» в опциях публикации.

Возможно, это не «чистое» решение проблемы, но это обходной путь.

Надеюсь, это поможет.

Andrew

1 голос
/ 21 июля 2014

Я недавно столкнулся с этой ошибкой. Как упомянуто выше @samiz, во-первых, вам нужно удалить все * .dll.Refresh после этой сборки и опубликовать ваш сайт. Однако иногда, как это происходит для меня, когда вы удалили * .dll.refresh, а затем опубликовали свой сайт, ошибка напоминает, как обычно. Я сделал много тестов, но ничего не изменилось.

Я также создаю новую папку и копирую все * .dll, которые мне нужны для моего сайта. Затем удалите все * .dll внутри папки Bin, затем добавьте их по одному.

Наконец, я перезагружаю свой компьютер, а затем пытаюсь опубликовать свой веб-сайт. Верьте мне или нет, это работает хорошо, и никакая ошибка не произошла.

0 голосов
/ 11 ноября 2016

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

0 голосов
/ 20 ноября 2015

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

Решение: я удалил файл из дерева проекта в Visual Studio, а затем снова смог опубликовать веб-сервис с включенными / проверенными предварительно скомпилированными настройками.

...