我厌倦了这个错误。我在网上搜索并尝试了所有可能的建议,我可以找到这个错误。
最后,我甚至尝试了命令行并获得以下堆栈跟踪。
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
答案 0 :(得分:8)
当我尝试使用MSBUILD编译项目时,我发生了这个错误 - 它可以在Visual Studio中构建,甚至可以在我的本地浏览器中调试。 VS中的Publish选项也有效。但命令行MSBUILD每次都会导致项目错误。
我设法通过在我的网站上打开属性页,打开“MSBuild选项”选项卡,并取消选中“允许此预编译网站可更新”选项,然后点击“全部保存”,在VS 2012中修复此问题。
答案 1 :(得分:7)
我有相同的经验并从解决方案目录树中删除压缩标志,再次设置编译器。
答案 2 :(得分:5)
当*.dll.refresh
目录中的bin
文件指向不再可用的位置时,通常会发生这种情况。删除*.dll.refresh
文件可以解决问题。
答案 3 :(得分:4)
我知道这是一个旧帖子,但万一有人会发现这个有用:
这个问题的原因是 McAfee防病毒
ASPNETCOMPILER(0,0):错误ASPRUNTIME:对象引用未设置为对象的实例
答案 4 :(得分: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问题已解决。
答案 5 :(得分:1)
我最近遇到过这个错误。正如上面提到的@samiz,首先,您需要在构建和发布网站后删除所有* .dll.Refresh。但是,有时候,就像我发生的那样,当你删除* .dll.refresh,然后发布你的网站时,错误会像往常一样提醒。我做了很多测试,但没有任何改变。
我还创建了一个新文件夹并复制了我网站所需的所有* .dll。接下来,删除Bin文件夹中的所有* .dll,然后将它们添加一个。
最后,我重新启动我的电脑,然后尝试发布我的网站。信不信由你,它运作正常,没有错误发生。
答案 6 :(得分:1)
我有类似的问题。该应用程序将在IDE中构建和运行,但无法发布;在“合并dll进入单一装配”阶段进行调整。在研究了aspnet_merge.exe之后,我发现通过取消选中发布选项中的'emit debug information'复选框来解决问题。
这可能不是解决问题的“干净”方法,但这是一种解决方法。
希望这有帮助。
安德鲁
答案 7 :(得分:1)
从网站的Bin文件夹中删除所有* .compiled文件对我有用。 :)
这些文件可以安全删除,并在预编译期间创建。有关详细信息,请查看此MSDN link。
答案 8 :(得分:0)
就我而言,清除Cookie 解决了这个问题。
StackTrace提到了一些授权和cookie的事情。我在InCognito mode中打开了这个Web应用程序(它没有持久存储cookie存储)并且发现应用程序正在运行。
希望它对某人有帮助。
答案 9 :(得分:0)
同样,这是一篇旧帖子,但我有以下内容:
VS2012 asp.net网络表单应用 - &gt;升级到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属性被删除,或者即使它曾经存在,但是你可以使用这一个设置来打开和关闭此错误。
答案 10 :(得分:0)
当我尝试发布我的网络服务时遇到了同样的问题。问题是,当您将网站发布到目录时创建的PrecompiledApp.config文件是我的项目添加的一些方法。添加后,它会导致错误。
解决方案:我从Visual Studio中的项目树中删除了该文件,然后我又能够在启用/检查预编译设置的情况下再次发布Web服务。
答案 11 :(得分:0)
确保您不直接在虚拟目录上发布。如果是,请停止该站点然后发布然后重新启动该站点。
答案 12 :(得分:-2)
将Visual Studio升级到VS 2013.它为我解决了这个问题。 :)