如何在服务器上安装ASP.NET MVC 5?

21

我刚把我的网站从MVC 4升级到了MVC 5。

现在当我想在服务器上运行它,而不是在我的开发机器上时,它无法工作。

我认为这是因为我需要在服务器上安装MVC 5库,但我找不到它们。

我下载了WebMatrix 3,希望它提供了一种安装方法,但它只能让我安装MVC 4。

我应该安装什么才能运行ASP.NET MVC 5应用程序?

(不安装Visual Studio 2013)

编辑: 我禁用了自定义错误并出现了以下错误:

Could not load file or assembly 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

编辑2:我发现问题是由于我的其中一个依赖项使用了razor的2.0.0.0版本所致。


除了“它不起作用”之外,我们需要更多的诊断信息。 - Dai
访问网站时,我收到了IIS服务器错误页面,没有错误消息。 - alexandrekow
你看过应用程序事件日志吗?开始 > 运行 > eventvwr。 - Ahmed ilyas
@alexandrekow 在你的 web.config 文件中禁用 IIS(和 ASP.NET)自定义错误,然后你将获得详细的错误信息,这应该会有所帮助。 - Dai
MVC不是需要安装的东西。它只是一组需要在bin文件夹中的dll文件。就像Dai所说,您需要获取特定的错误消息。它可能与您认为发生的完全不同。 - the_lotus
我添加了错误信息。我查看了web.config文件,所有的Razor引用目标都是Version=3.0.0.0。这可能是因为Elmah引起的吗? - alexandrekow
4个回答

17

当您部署应用程序时,请确保所有程序集都被部署到生产环境的 bin 文件夹中。ASP.NET MVC 是一种 xCopy 部署方式,因此您无需安装任何东西。

您可能需要检查您的生产环境是否已注册 ASP.NET 4.0 和 4.5。


好的,谢谢。我记得曾经需要将MVC 3安装到我的Web服务器上。所以我猜应用程序会在GAC中查找dll文件,如果在应用程序bin文件夹中没有找到。 - alexandrekow
如何检查 ASP.NET 4.5 是否已注册? - Bryan Legend
2
最简单的方法就是重新注册.NET与IIS。这很快。我会在控制面板中检查是否已安装Microsoft .NET Framework 4.5。然后像平常一样使用regiis。https://dev59.com/2GYr5IYBdhLWcg3wW45t - Khalid Abuhakmeh
“检查您的生产环境是否已注册ASP.NET 4.0和4.5”是什么意思?我进入控制面板->程序和功能->看到.NET 4.5.2和.NET 4.6。我还需要寻找什么? - John Zabroski

3
MVC5和未来版本的MVC不需要安装在Windows Server上。 MVC5应用程序具有所有内容作为包。您无需安装任何内容。
服务器所需的是您在应用程序中使用的每个库和程序集的副本。为了解决这个问题,请确保bin文件夹中的所有内容在服务器上都被称为相同的名称,而不是服务器正在寻找自己的GAC以查找应用程序中使用的程序集。
如果您没有找到所有软件包,则可以通过命令在服务器上安装nuget软件包。

这是一个有用的线索,但尽管NuGet使用Microsoft.Owin 3.0.1并且Web.config重定向到3.0.1,我仍然遇到了以下错误:无法加载文件或程序集“Microsoft.Owin,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”之一或其依赖项。所定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040) - John Zabroski
@JohnZabroski 你的Bin文件夹包含与web.config文件中编写的版本不同的版本。如果您不确定,请从web.config中删除特定版本字符串并尝试。 - Anirudha Gupta
问题可能是我在目标环境中安装了.NET Framework 4.6,但在我的Visual Studio解决方案中,我针对的是4.6.1版本。 - John Zabroski
@JohnZabroski 在生产环境中不应该使用比目标开发环境更新的.NET Framework版本,无论是大型还是小型更新。如果你在开发中针对4.6.1版本,则在生产服务器上也必须使用此版本。 - Anirudha Gupta

2
最好的方法是进行发布,右键单击解决方案资源管理器中的项目,然后选择“发布”。基本上它将编译您的解决方案并将所有程序集/工件转储到您的Web服务器、FTP或本地文件夹。

0

确保所有的程序集引用都被复制到部署目录中。为此,您可以更改 .project 文件中的 <Reference...> 标记。另外,您还可以使用 Visual Studio 的属性设置器将每个 dll 引用的 "Copy Local" 属性设置为 "True"。


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