none
mvc报错 未能加载文件或程序集“System.Web.Mvc RRS feed

  • 问题

  • 能加载文件或程序集“System.Web.Mvc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.IO.FileLoadException: 未能加载文件或程序集“System.Web.Mvc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

    源错误: 
    执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

    程序集加载跟踪: 下列信息有助于确定程序集“System.Web.Mvc”未能加载的原因。
    === 预绑定状态信息 ===
    日志: DisplayName = System.Web.Mvc
     (Partial)
    警告: 为程序集提供了部分绑定信息:
    警告: 程序集名称: System.Web.Mvc | 域 ID: 2
    警告: 当仅提供程序集显示名称的一部分时,将发生部分绑定。
    警告: 这可能导致联编程序加载错误的程序集。
    警告: 建议为程序集提供完全指定的文字标识,
    警告: 并由简单名称、版本、区域性和公钥标记组成。
    警告: 有关此问题的详细信息和常见解决方案,请参见白皮书 http://go.microsoft.com/fwlink/?LinkId=109270。
    日志: Appbase = file:///D:/work/erpClient/WebPortal/Tpo.Crm.Portal/
    日志: 初始 PrivatePath = D:\work\erpClient\WebPortal\Tpo.Crm.Portal\bin
    调用程序集: (Unknown)。
    ===
    日志: 此绑定从 default 加载上下文开始。
    日志: 正在使用应用程序配置文件: D:\work\erpClient\WebPortal\Tpo.Crm.Portal\web.config
    日志: 使用主机配置文件: D:\Documents\IISExpress\config\aspnet.config
    日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。
    日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
    日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/dd2f8139/8fe7a89c/System.Web.Mvc.DLL。
    日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/dd2f8139/8fe7a89c/System.Web.Mvc/System.Web.Mvc.DLL。
    日志: 尝试下载新的 URL file:///D:/work/erpClient/WebPortal/Tpo.Crm.Portal/bin/System.Web.Mvc.DLL。
    日志: 正在使用应用程序配置文件: D:\work\erpClient\WebPortal\Tpo.Crm.Portal\web.config
    日志: 使用主机配置文件: D:\Documents\IISExpress\config\aspnet.config
    日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。
    日志: 在应用程序配置文件中找到重定向: 4.0.0.0 已重定向到 4.0.0.1。
    日志: 策略后引用: System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/dd2f8139/8fe7a89c/System.Web.Mvc.DLL。
    日志: 尝试下载新的 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/dd2f8139/8fe7a89c/System.Web.Mvc/System.Web.Mvc.DLL。
    日志: 尝试下载新的 URL file:///D:/work/erpClient/WebPortal/Tpo.Crm.Portal/bin/System.Web.Mvc.DLL。
    警告: 比较程序集名称时发生不匹配: 修订号
    错误: 未能完成程序集的安装(hr = 0x80131040)。探测终止。
    

    堆栈跟踪: 
    [FileLoadException: 未能加载文件或程序集“System.Web.Mvc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]
    
    [FileLoadException: 未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
    
    [ConfigurationErrorsException: 未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
       System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516
    
    [HttpException (0x80004005): 未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
    2015年6月9日 10:30

答案

  •  

    找到原因了,webconfig中配置问题:

    <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
          </dependentAssembly>

    上面这段把mvc版本重定向到4.0.0.1了改成:

     <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0" />
          </dependentAssembly>

    就好了!

    2015年6月11日 2:30

全部回复

  • mvc4安装了,编译也没问题,就是运行时候报了这个错,很怪。mvc的dll引用路径是C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll,我的是64位电脑,这个有什么关系吗?
    2015年6月9日 10:31
  • 这个没关系的,x86这个文件夹是给32位程序在64位系统上运行准备的一个文件夹。VS本来也是32位的,装在你所提到的位置没有问题。


    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年6月10日 7:56
    版主
  • 那这个是什么原因呢?奇怪,我有些同事电脑上是好的,有些则不行!
    2015年6月11日 1:55
  •  

    找到原因了,webconfig中配置问题:

    <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
          </dependentAssembly>

    上面这段把mvc版本重定向到4.0.0.1了改成:

     <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0" />
          </dependentAssembly>

    就好了!

    2015年6月11日 2:30