11

我厌倦了这个错误。我在网上搜索并尝试了我能找到的这个错误的所有可能建议。

  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
4

14 回答 14

9

This error was occurring for me when I tried to compile the project with MSBUILD - it would build fine within Visual Studio, and would even Debug in my local browser. The Publish option within VS worked, as well. But the command-line MSBUILD was causing the project to error out every time.

I managed to fix this problem in VS 2012 by opening the Property Pages on my Website, opening the 'MSBuild Options' tab, and unchecking the 'Allow this precompiled site to be updatable' option, then hitting 'save all'.

于 2014-10-23T20:44:55.757 回答
7

我有同样的经历,并从解决方案目录树中删除了压缩标志,让编译器再次工作。

于 2014-03-24T16:18:32.667 回答
5

这通常发生在目录*.dll.refresh中的文件bin指向不再可用的位置时。删除*.dll.refresh文件应该可以解决问题。

于 2012-05-30T00:33:40.173 回答
4

我知道这是一篇旧帖子,但以防万一有人会发现这很有用:

对我来说,这个问题的原因是McAfee 防病毒软件

ASPNETCOMPILER(0,0):错误 ASPRUNTIME:对象引用未设置为对象的实例

于 2014-11-19T15:31:52.067 回答
2

在 MVC WebApplication 中编译视图时,我遇到了类似的问题。只有在 VS 或 MSBuild 中构建解决方案时才会引发 NullReferenceException。从命令行运行 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 问题。

于 2013-05-14T19:28:03.020 回答
1

从网站的 Bin 文件夹中删除所有 *.compiled 文件对我有用。:)

这些文件可以安全删除,并且是在预编译期间创建的。有关更多信息,请查看此MSDN 链接

于 2014-08-18T14:51:31.597 回答
1

我最近遇到了这个错误。正如上面提到的@samiz,首先,您需要在构建并发布您的网站之后删除所有 *.dll.Refresh。但是,有时,就像我一样,当您删除 *.dll.refresh,然后发布您的网站时,错误会像往常一样提醒。我做了很多测试,但没有任何变化。

我还创建了一个新文件夹并复制了我的网站所需的所有 *.dll。接下来,删除 Bin 文件夹中的所有 *.dll,然后将它们添加一个。

最后,我重新启动我的电脑,然后我尝试发布我的网站。信不信由你,它工作正常,没有发生错误。

于 2014-07-21T10:56:27.820 回答
1

我有一个类似的问题。应用程序将在 IDE 中构建和运行,但无法发布;在“将 dll 合并到单个程序集”阶段结束。在研究 aspnet_merge.exe 后,我发现通过取消选中发布选项中的“发出调试信息”复选框解决了该问题。

它可能不是解决问题的“干净”解决方案,但它是一种解决方法。

希望这可以帮助。

安德鲁

于 2014-07-31T09:17:57.840 回答
0

就我而言,清除 cookie解决了这个问题。

StackTrace提到了一些授权和 cookie 的事情。我以InCognito 模式(不保留 cookie 存储)打开 Web 应用程序,发现该应用程序正常工作。

希望它可以帮助某人。

于 2015-06-24T09:20:54.887 回答
0

确保您没有直接在虚拟目录上发布。如果是,请停止站点然后发布然后重新启动站点。

于 2016-11-11T20:10:06.053 回答
0

当我尝试发布我的网络服务时,我遇到了同样的问题。问题是当您将网站发布到目录时创建的 PrecompiledApp.config 文件是如何添加到我的项目中的。添加后,它导致了错误。

解决方案:我从 Visual Studio 中的项目树中删除了该文件,然后我能够在启用/检查预编译设置的情况下再次发布 Web 服务。

于 2015-11-20T09:07:29.237 回答
0

同样,这是一个旧帖子,但我有以下内容:

VS2012 asp.net web forms app -> 升级到VS2013

尝试发布 - 得到与 OP 相同的错误。

当我终于弄清楚时,问题是由一件事引起的:

当我查看 web.config 中的成员资格提供程序时,一项缺少 connectionStringName 属性:

坏的:

<membership defaultProvider="SomeMembershipProvider">
  <providers>
    <clear />
    <add name="SomeMembershipProvider" type="System.Web.Security.SqlMembershipProvider" passwordFormat="Encrypted" applicationName="SomeAppName"  />
    <add connectionStringName="SomeConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/SomeAppName" requiresUniqueEmail="false" blaw blaw blaw />
  </providers>
</membership>

好的:

<membership defaultProvider="SomeMembershipProvider">
  <providers>
    <clear />
    <add name="SomeMembershipProvider" connectionStringName="PerhapsSomeOtherConnectionString" type="System.Web.Security.SqlMembershipProvider" passwordFormat="Encrypted" applicationName="SomeAppName"  />
    <add connectionStringName="SomeConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/SomeAppName" requiresUniqueEmail="false" blaw blaw blaw />
  </providers>
</membership>

我不确定为什么要删除其中一个 connectionStringName 属性,或者即使它曾经存在,但您可以使用此设置打开和关闭此错误。

于 2015-10-06T12:40:57.883 回答
0

在 Visual Studio 2017 中,这里给出的解决方案都不适合我。我能够通过以下步骤解决问题:

  1. 如果 Visual Studio 正在运行,请退出
  2. 从开始菜单打开Visual Studio 安装程序
  3. 在已安装选项卡下,它将显示您计算机上的 Visual Studio 版本
  4. 单击更多选项并选择修复
  5. 修复操作完成后,在 Visual Studio 中重新启动您的项目
  6. 现在,当您单击发布时,您应该不会收到此错误
于 2021-11-14T09:06:11.390 回答
-2

将您的 Visual Studio 升级到 VS 2013。它为我解决了这个问题。:)

于 2014-04-05T06:05:59.947 回答