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

205

我的新ASP.NET MVC Web应用程序在开发工作站上可以运行,但在Web服务器上无法运行...


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


配置错误

描述:处理此请求所需的配置文件在处理过程中出现错误。请查看下面的具体错误详细信息,并适当修改您的配置文件。

解析器错误消息:无法加载文件或程序集“System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 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,版本=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。

警告:组件绑定日志记录已关闭。
若要启用组件绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。
注意:启用组件绑定失败日志记录会伴随一些性能损失。
要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

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


我是否需要在服务器上安装 AspNetMVCBeta-setup.msi?还是有其他的服务器安装程序?

enter image description here

19个回答

216

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


编辑:(由jcolebrand进行)我查看了这个链接,然后遇到了与Victor 下面提到的相同的问题,因此建议您也添加以下内容:

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

6
注意:当您安装了MVC4(目前是beta版)时,您需要获取v1.0版本的这些DLL文件,您还需要获取System.Web.Helpers(至少我需要) 。 - Tracker1
1
您链接到的帖子没有说明如何通过发布机制将Microsoft.Web.Infrastructure传送到Web服务器。必须直接在服务器上安装东西,有点糟糕。 - Mark Rogers
1
使用Visual Studio 2010,这变得更加容易,如此处所述:http://www.britishdeveloper.co.uk/2011/06/adding-mvc-dependencies-to-project-for.html - Daniël Tulp
如果您不使用Web Deploy,或者在这里查看http://www.britishdeveloper.co.uk/2011/05/mvc3-deploy-could-not-load-file-or.html。 - Jeroen K
我必须清空 bin 文件夹,然后重新发布,也就是说,如果你没有使用部署包。 - Rob Koch

42

我遇到了与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部署完美运行。关闭自定义错误并添加正确的引用以纠正错误。这应该让您朝着正确的方向前进。


26

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

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

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


25

我在尝试将我的MVC3 Razor Web应用程序部署到GoDaddy共享主机上时遇到了相同的问题。除了@Haacked帖子中列出的那些参考外,还需要引用一些其他的.dll文件。具体细节请参见:http://paulmason.biz/?p=108

基本上,你需要额外添加以下引用,并根据说明将它们设置为本地部署:

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

谢谢,手动添加引用并在本地部署后,它确实解决了MVC3的问题! - Stefanvds
同样的事情在这里。关于添加那些额外的DLLs的指导很好。谢谢! - Mike L
这里也是一样的情况。不在Godaddy上,而是在我的公司服务器上,所以这必须是一个普遍的情况。 - Torben Junker Kjær

13
在VS2010中,右键单击解决方案资源管理器中的项目,选择“添加可部署的依赖项”,然后在以下对话框中勾选与MVC相关的复选框。
这将在项目中创建一个名为“_bin_deployableAssemblies”的文件夹,其中包含其他答案中提到的所有.dll文件。我相信在创建部署包时,这些文件会被复制到bin文件夹中。

12
快速简单解决方案:我在使用Microsoft.AspNet.Mvc -Version 5.2.3时遇到了这个问题,经过查看所有这些帖子后,我发现了一个最简单的解决方案。 只需按照以下步骤操作:
  1. 在您的项目中打开 Visual Studio 中的 NuGet 包管理器
  2. 搜索 Microsoft.AspNet.Mvc
  3. 找到后,将操作更改为“卸载”并卸载它
  4. 完成后,再次安装并尝试
这将自动修复所有引用问题。 请参见下面的图像:

输入图片说明


9

简单的解决方法。在VS2010中,右键单击您的MVC项目,选择“添加部署依赖项...”,选择您想要的选项并点击确定。


8

我曾经遇到同样的问题,加入了他们说的所有程序集,但仍然得到了相同的错误。

结果发现你需要将 "Specific Version" 设置为 False。

Specific version should be false.


如果未启用,您可以将“复制本地”切换为“True”。 - AStopher

6
我们希望添加它,因为我们正在制作一个使用它的类库。
对于我来说,它在这里...
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

3

如果您没有使用托管提供程序,并且可以访问服务器以安装...然后安装MVC 3更新工具,这样做...将节省您在Windows 2003服务器 / IIS6机器上的数小时问题。 我在此页面发表了评论Nuget.Core.dll版本号不匹配


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