无法加载文件或程序集System.Web.Mvc

时间:2013-02-04 19:59:46

标签: c# asp.net asp.net-mvc umbraco

我在我的项目中使用umbraco 4.11.3。我的项目在Windows 7上运行良好,并从visual studio 2012运行。 但是从2012年的visual studio开始,它在Win 8中无效!

错误是:

  

无法加载文件或程序集&System; Web.Mvc,Version = 2.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.IO.FileLoadException:无法加载文件或   assembly&System; Web.Mvc,Version = 2.0.0.0,Culture = neutral,   公钥= 31bf3856ad364e35'或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

装配加载跟踪:以下信息可能对您有所帮助   确定程序集&System; Web.Mvc,Version = 2.0.0.0的原因,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'无法加载。

     

===预绑定状态信息===日志:用户= Jahan-PC \ jahan日志:DisplayName = System.Web.Mvc,Version = 2.0.0.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35(完全指定)LOG:Appbase =   文件:/// G:/20130204/SourceCode/Defraz.Movafaqiyat.WebApp/Defraz.Movafaqiyat.WebApp/   日志:初始PrivatePath =   G:\ 20130204 \源码\ Defraz.Movafaqiyat.WebApp \ Defraz.Movafaqiyat.WebApp \ BIN   调用程序集:ClientDependency.Core.Mvc,Version = 1.5.1.0,   Culture = neutral,PublicKeyToken = null。   ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:   G:\ 20130204 \源码\ Defraz.Movafaqiyat.WebApp \ Defraz.Movafaqiyat.WebApp \的web.config   日志:使用主机配置文件:   C:\ Users \ jahan \ Documents \ IISExpress \ config \ aspnet.config日志:使用   来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。   日志:策略后引用:System.Web.Mvc,Version = 2.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35日志:正在尝试   下载新的URL   file:/// C:/ Users / jahan / AppData / Local / Temp / Temporary ASP.NET   文件/根/ bc5b37d0 / 42db0b24 / System.Web.Mvc.dll程序。日志:正在尝试   下载新的URL   file:/// C:/ Users / jahan / AppData / Local / Temp / Temporary ASP.NET   文件/根/ bc5b37d0 / 42db0b24 / System.Web.Mvc / System.Web.Mvc.dll程序。日志:   试图下载新的URL   文件:/// G:/20130204/SourceCode/Defraz.Movafaqiyat.WebApp/Defraz.Movafaqiyat.WebApp/bin/System.Web.Mvc.DLL。   警告:比较程序集名称导致不匹配:重大   版本错误:无法完成装配设置(hr = 0x80131040)。   探测终止。

     

堆栈追踪:

     

[FileLoadException:无法加载文件或程序集' System.Web.Mvc,   Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'要么   其中一个依赖项。定位程序集的清单定义   与装配参考不匹配。 (HRESULT的例外情况:   0x80131040)]
  ClientDependency.Core.Mvc.MvcFilter.ValidateCurrentHandler()+ 0
  ClientDependency.Core.Module.ClientDependencyModule.b__0(IFilter的   f)+31 System.Linq.Enumerable.Any(IEnumerable 1 source, Func 2   谓词)+146
  ClientDependency.Core.Module.ClientDependencyModule.ValidateCurrentHandler(IEnumerable`1   过滤器)+127
  ClientDependency.Core.Module.ClientDependencyModule.HandleRequest(对象   发件人,EventArgs e)+179
  System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +136 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+69

注意:IIS上发布的项目在win7和win8中运行良好。      我的项目不是基于ASP.NET MVC。 请帮帮我。

4 个答案:

答案 0 :(得分:13)

我们正在使用Azure云来运行部署,但我得到了同样的错误。由于您无法真正将软件包安装到服务器实例上,解决此问题的方法是进入项目的引用,查找缺少其抱怨的库的引用,转到属性,然后将Copy Local设置为True。重新部署,你就完全了。

答案 1 :(得分:6)

我假设这是一台新机器,因为你有新的操作系统和不同版本的Visual Studio。我认为您需要安装MVC Framework版本2,因为这是您的Umbraco安装所期望的。您可以安装Framework,将DLL放入GAC,也可以将DLL从良好的系统复制到Web应用程序的bin文件夹中。

注意,你说你的项目“不使用”MVC,但我想你会发现Umbraco的确如此。无论如何,错误告诉您系统希望找到它。

答案 2 :(得分:6)

此问题的正确解决方法是:

  1. 右键点击References中的Solution Explorer,然后选择Manage NuGet Packages
  2. 在左侧选择Updates
  3. 在中间部分选择Microsoft ASP.NET MVC
  4. 您应该会在选择中看到Update按钮,点击它
  5. 它......接受任何可能弹出并在本地发布或运行项目的T& Cs。如果您在本地运行项目时仍然遇到问题,请尝试关闭Visual Studio,删除项目的.SUO文件,然后再次尝试打开解决方案......再次尝试运行。

答案 3 :(得分:3)

Umbraco 4.11.3不使用MVC2,它使用MVC3,所以我猜你在web.config中有一个引用到MVC2库,可能在compilation > assemblies部分。看起来应该是这样的:

<compilation defaultLanguage="c#" batch="false" targetFramework="4.0" debug="true">
  <assemblies>
    <!-- ASP.NET 4.0 Assemblies -->
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
  <!-- Added in Umbraco 4.6.2 -->
  <buildProviders>
    <add extension=".cshtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
    <add extension=".vbhtml" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
    <add extension=".razor" type="umbraco.MacroEngines.RazorBuildProvider, umbraco.MacroEngines" />
  </buildProviders>
  <!-- End of added in Umbraco 4.6.2 -->
</compilation>