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

我的新的ASP.NET MVC Web应用程序在我的开发工作站上工作,但不能在我的Web服务器上运行…


“/”应用程序中的服务器错误。


configuration错误

说明:处理为请求提供服务所需的configuration文件时发生错误。 请查看下面的具体错误细节,并适当修改您的configuration文件。

parsing器错误消息:无法加载文件或程序集“System.Web.Mvc,版本= 1.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。 该系统找不到指定的文件。

源错误:

Line 44: <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> Line 45: <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> Line 46: <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> Line 47: <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> Line 48: <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 

源文件: C:\ inetpub \ www.example.org \ web.config 行: 46

程序集加载跟踪:以下信息可以帮助确定程序集“System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”为什么无法加载。

警告:程序集绑定日志logging被closures。
要启用程序集绑定失败日志logging,请将registry值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。
注意:与assembly绑定失败logging相关的性能损失。
要closures此function,请删除registry值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

版本信息: Microsoft .NET Framework版本:2.0.50727.3053; ASP.NET版本:2.0.50727.3053


我需要在服务器上安装AspNetMVCBeta-setup.msi吗? 还是有一个不同的服务器安装程序?

在这里输入图像描述

我刚刚写了一篇博客文章解决这个问题。 你可以在你的服务器上安装ASP.NET MVC,或者你可以按照这里的步骤 。


编辑:(由jcolebrand)我通过这个链接,然后有同样的问题作为维克多 下面 ,所以我build议你也添加这些:

 * Microsoft.Web.Infrastructure * System.Web.Razor * System.Web.WebPages.Deployment * System.Web.WebPages.Razor 

我遇到了同样的问题,像sgriffinusa。 除了Phil的文章中提到的参考文献: http : //www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx 。 我添加了这些:

 * Microsoft.Web.Infrastructure * System.Web.Razor * System.Web.WebPages.Deployment * System.Web.WebPages.Razor 

Godaddy Deployment完美运作。 closures自定义错误并添加引用来纠正错误。 这应该导致你在正确的方向。

直接在您的Web服务器上安装MVC是一种select,因为这样程序集将安装在GAC中。 您也可以bin部署程序集,这可能有助于保持服务器不受预发布程序集的限制,直到最终版本可用为止。

Phil Haack几天前发布了一篇关于如何将MVC与应用程序一起部署的好文章,因此不需要直接安装:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

我遇到了同样的问题,试图在GoDaddy共享主机上部署我的MVC3 Razor Web应用程序。 还有一些需要引用的额外的.dll文件。 详细信息在这里: http : //paulmason.biz/?p=108

基本上,除了@ Haacked的文章中列出的内容之外,您还需要添加对以下内容的引用,并将它们设置为在本地部署(如上所述)。

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

在VS2010中,右键单击解决scheme资源pipe理器中的项目,然后select“添加可部署的依赖关系”。 然后在下面的对话框中检查MVC相关的checkbox。

这将在项目中创build一个“_bin_deployableAssemblies”文件夹,其中包含其他答案中提到的所有.dll文件。 我相信这些在创build部署包时被复制到bin文件夹中。

简单的修复 在VS2010中,右键单击你的MVC项目,select“Add Deployable Dependencies …”,select你想要的选项并点击确定

我们要添加它,因为我们正在创build一个使用它的类库。

对我来说,这是…

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

有同样的问题,并添加他们说的所有程序集,但仍然有相同的错误。

事实certificate,你需要使“ 特定版本 ”=假。

具体版本应该是假的。

快速和简单的解决scheme:我遇到了这个问题与Microsoft.AspNet.Mvc – 版本5.2.3和通过所有这些线程后,我find了一个最简单的解决scheme。

只需按照以下步骤

  1. 在Visual Studio中为您的项目打开NuGet Package Manager
  2. searchMicrosoft.AspNet.Mvc
  3. find后,将操作更改为“卸载并卸载”
  4. 完成后,再次安装,现在就试用

这将自动修复引用的所有问题。 见下图:

在这里输入图像描述

如果您不使用托pipe服务提供商,并且您有权访问服务器进行安装,那么请安装MVC 3更新工具,这样做会节省您在Windows 2003服务器/ IIS6机器上的几个小时的问题。 ,我在这里评论了Nuget.Core.dll版本号不匹配

除了哈克之外,汉塞尔曼也有类似的职位。 BIN使用Razor将ASP.NET MVC 3部署到未安装MVC的Windows Server

对于我来说,“复制本地=真实”的解决scheme是不够的,因为我的网站的项目引用不包括所有丢失的DLL。 正如Scott在他的文章中提到的,我还需要从我的开发框中的以下文件夹中获取更多dll:C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies。 该错误消息告诉我哪个dll丢失(System.Web.Infrastructure,System.Web.Razor等)我继续添加每个缺less的DLL,一个接一个,直到它的工作。

我做了一个“更新包 – 重新安装Microsoft.AspNet.Mvc”来解决它在Visual Studio 2015年。

同时检查你的Views文件夹中 web.config中的程序集版本,并确保它匹配。 我有时会忘记在那个位置有第二个web.config。

将项目移动到另一个解决scheme之后,我遇到了一系列程序集文件的问题。

对我来说, web.config文件试图添加这个程序集:

 <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

认为该项目中的参考指向3.0.0.0版(点击参考并滚动到属性的底部)。 因此,我只是改变了web.config文件中的参考版本。

我不知道这是否只是一个错误。 添加所有其他引用的问题是引用出现在configuration文件中,但是在项目中(在解决scheme资源pipe理器中)并没有真正引用它,并且所需的文件没有与其余项目文件一起复制,可能是由于不是"copy local = true"

现在,我无法在可添加的程序集中find这些程序集(通过右键单击引用并尝试从程序集或扩展中添加它们)。 相反,我创build了一个新的MVC解决scheme,它添加了我需要的所有程序集和引用,并在解决scheme资源pipe理器中的新项目引用下find它们,并在属性窗口中查找它们的path以供参考。

然后我只是将我需要的库复制到另一个项目中并引用它们。

尝试了一切后,仍然失败这是我的解决scheme:我记得我有错误,最后更新我的Visual Studio中的MVC版本,所以我从另一个Visual Studio(不同的计算机)运行项目,比上传的DLL和S的工作。 也许它会帮助别人…

我正在使用.net项目的jenkins,并与MVC 4引用的麻烦。

我终于通过使用基于registry的.Net参考search引擎function解决了我的问题:

“HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ V2.0.50727 \ AssemblyFoldersEx”

例如,您可以创build子键并将默认键设置为“c:\ myreferenceedir”。

它为我保存了MVC版本和ASP.net网页。

有用的添加引用到“添加引用对话框”

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/

正如其他人所提到的,将“ Copy Local设置为true ,将这些引用添加到可视化工作室。 (我也必须添加System.Web.Webpages

 Microsoft.Web.Infrastructure System.Web.Razor System.Web.WebPages.Deployment System.Web.WebPages.Razor System.Web.Webpages 

我使用Manage NuGet Packages添加了“Microsoft ASP.NET Razor”。

添加引用,出于某种原因,我只有System.Web.Helpers 1.0.0和2.0.0 …但不是3.0.0。

另一个选项,工作forms我是删除对System.Web.Mvc和System.Web.Http的引用…然后重新添加他们眉毛到csproj文件中的包位置(您可以最简单地编辑项目一个文本编辑器):

 <Reference Include="System.Web.Http"> <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath> <Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath> 

一个重要的考虑因素是web.config文件,一些包可以破坏你的绑定redirect造成的破坏(stream氓软件包在内部包,我没有从包中删除web.config或确保包中的web.config没有任何绑定redirect,例如通过删除重复的和不正确的节点来解决这个问题

  <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/> <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/> <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/> </dependentAssembly> </assemblyBinding> </runtime> 

通过删除线8至24修复构build。