无法加载文件或程序集 Temporary ASP.NET Files

20

我正在使用C# (.NET Framework 4)中的ASP.NET开发网站。在创建新网站项目后,我尝试运行该项目。但是我遇到了以下错误:

无法加载文件或程序集“file:///C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ myfirst \ 159977c5 \ b9e740fc \ App_global.asax.yfqtni9g.dll”或其某个依赖项。系统找不到指定的文件。

我已经阅读了下面的链接(所有内容都涉及访问文件夹),但它们没有帮助我 :(

https://dev59.com/BmPVa4cB1Zd3GeqP7JYS

https://dev59.com/43RA5IYBdhLWcg3w6SRH

http://web.archive.org/web/20101023213019/http://www.yetanotherdeveloper.com/post/2008/08/10/Could-not-load-file-or-assembly-App_Web.aspx

我检查并为“Temporary ASP.NET Files”及其子文件夹和文件的Users用户组提供了完全访问权限。

程序集加载跟踪

WRN:程序集绑定记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。 注意:启用程序集绑定失败日志记录会带来一些性能损失。 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

堆栈跟踪

[FileNotFoundException: Could not load file or assembly 'file:///C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myfirst\4ff7194b\2da62764\App_global.asax.h-eem9xt.dll' or one of its dependencies. The system cannot find the file specified.]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +39
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +132
System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence assemblySecurity) +28
System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly() +93
System.Web.Compilation.BuildProvider.CreateBuildResult(CompilerResults results) +60
System.Web.Compilation.BuildProvider.GetBuildResult(CompilerResults results) +16
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +9118863
System.Web.Compilation.BuildManager.CompileGlobalAsax() +44
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +265

[HttpException (0x80004005): Could not load file or assembly 'file:///C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myfirst\4ff7194b\2da62764\App_global.asax.h-eem9xt.dll' or one of its dependencies. The system cannot find the file specified.]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +62
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +421
System.Web.Compilation.BuildManager.CallAppInitializeMethod() +31
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +691

[HttpException (0x80004005): Could not load file or assembly 'file:///C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myfirst\4ff7194b\2da62764\App_global.asax.h-eem9xt.dll' or one of its dependencies. The system cannot find the file specified.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9090876
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +258

如果这是一个重复的问题,请给我一个链接

感谢您的帮助。

以下是我的日志

操作成功完成。
绑定结果:hr = 0x0。操作成功完成。
程序集管理器从此处加载:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 下运行。 ---以下详细错误日志。
=== 预绑定状态信息 === LOG: 用户=John-PC\John LOG: 显示名称=Microsoft.VisualStudio.ComponentModelHost,Version=10.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a(完全指定) LOG: Appbase=file:///G:/WorkShop/HTML-CSS/ASP/MyFirst/ LOG: 初始 PrivatePath=G:\WorkShop\HTML-CSS\ASP\MyFirst\bin LOG: 动态基址=C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myfirst\159977c5 LOG: 缓存基址=C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myfirst\159977c5 LOG: AppName=b9e740fc 调用程序集:(未知)。 === LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件:G:\WorkShop\HTML-CSS\ASP\MyFirst\web.config LOG:使用主机配置文件: LOG:使用位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的机器配置文件。 LOG: 通过在 GAC 中查找来找到程序集。 LOG: 绑定成功。从 C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.ComponentModelHost\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.ComponentModelHost.dll 返回程序集。 LOG: 程序集加载在默认加载上下文中。

我无法追踪到任何错误。请帮忙...


更多选项请参见类似问题https://dev59.com/43RA5IYBdhLWcg3w6SRH#1250797 - Michael Freidgeim
12个回答

25

我在尝试开始性能测试后遇到了类似的问题。 我从web.config中的system.web > compilation元素中删除了assemblyPostProcessorType属性,然后它又正常工作了。

 <system.web>
<compilation debug="false" targetFramework="4.5.1"  
            assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</system.web>

1
web.config文件位于哪里? - Hitesh

9
如果您使用Visual Studio性能工具,则可能会在web.config的appsettings部分中留下一个键。它会导致32位库加载,如果您的应用程序以64位模式加载,则无法正常工作。
请检查以下内容并将其删除:
<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\vsinstr.exe"/>

4

其中一个解决方案是从临时的asp.net文件夹中删除这些文件,这对我总是有效的。


1
嗨,Sumant,我已经删除了框架目录中的Temp目录本身,所以现在我从Temp文件中得到了相同的错误,如下所示:“Error 1 Could not load file or assembly 'file:///C:\Users\John\AppData\Local\Temp\Temporary ASP.NET Files\myfirst\159977c5\b9e740fc\App_global.asax.r8qranjn.dll' or one of its dependencies. The system cannot find the file specified. - new_programmer
1
当我关闭Visual Studio并停止我的IIS网站时,这对我起作用了。 - Ciaran Gallagher
@CiaranGallagher,你的提示帮了我大忙。我只是停止了IIS,然后重新启动,错误就消失了。 - Sotiris Zegiannis

3
从 web.config 文件中删除以下行将解决您的错误。
<compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>

2
在部署ASP.NET MVC项目时,我曾经在Visual Studio应用程序属性中将一个项目的DLL(程序集名称)重命名。
ASP.NET MVC项目的Views文件夹中有一个Web.config文件。这个Web.config文件有一个razor部分,我们可以在其中列出程序集以获得Razor视图文件的良好IntelliSense支持。
  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="VizionLogs.LogRepository" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

我的问题: 我将项目程序集从 VizionLogs.LogRepository 重命名为 ITVizion.VizionLogs.LogRepository,但忘记在 Web.config 文件中进行相应更改。这导致了 ASP.NET 临时文件夹错误,告诉我找不到 VizionLogs.LogRepository。花了一些时间才弄清楚出了什么问题以及错误的位置... :)


2

嗨Sarrus,我在我的问题中放置了上面的链接。我删除了Temporary ASP.NET文件夹中的所有内容。但仍然出现相同的错误。 - new_programmer
我进行了重建和重新发布,但这并没有解决这个问题,但是清理后再次发布到服务器上就可以了。 - D.B. Fred

1

前往注册表并输入

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
"LogFailures"=dword:00000001
"LogPath"="c:\\temp\\fusionLog"

对于已加载的程序集,您会在 c:\temp\fusionLog 中找到日志。

在那里,您会发现缺少了哪些依赖项。


嗨Peter,我不确定如何添加你提到的三个注册表。请帮助我。我在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]目录中。 - new_programmer
我做到了。右键单击->新建->Dword。 - new_programmer
不要忘记在之后禁用/删除融合日志。它会填满磁盘并影响性能。 - pero

0
请备份并删除文件夹myfirst\159977c5\b9e740fc\App_global.asax.yfqtni9g.dll。

0

在相应的文件夹中删除临时项目文件,例如对于 .net 4,从以下文件夹中删除将解决问题。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files"

还可以参考此答案。

由Tommy回答


0
在我的情况下,我将bin文件夹定位在web.config中,如下所示:
<appSettings>
      <add key="webSettingFolder" value="C:\Users\ali eshghi\source\repos\SalesWebApiDotNetFramWork\SalesWebApiDotNetFramWork\bin\"/>
  </appSettings>

之后错误已经消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接