如何在IIS7上安装ASP.NET MVC 2?

8

我开发了一个ASP.NET MVC 2网站,现在需要将其部署到我的Web服务器上。我已经克服了一些障碍,因为未安装ASP.NET等,但现在我已经可以提供纯内容文件,并且如果我尝试访问我的MVC URL之一,我会收到以下错误:

无法加载文件或程序集“System.Web.Mvc,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。系统找不到指定的文件。

这并不奇怪,因为我没有安装MVC2。问题是,我找不到任何有关如何安装它的好信息!

Microsoft Download Center列出了3个文件,没有一个看起来很有前途:

ASP.NET-MVC-2-RTM-Release-Notes.doc

AspNetMVC2_VS2008.exe

mvc2-ms-pl.zip

该站点没有解释这些文件实际上是什么,但我认为最后一个文件是源代码。无论如何,它看起来就像是那样。发布说明没有任何帮助,因为它们都是关于在您的开发机器上安装的,而且EXE的名称清楚地表明这一切都与Visual Studio集成有关。
那么我应该如何部署这个该死的东西呢?
Scott Gu的博客链接到的另一个选项是Microsoft Web Platform Installer。现在,我不想安装除MVC2之外的其他内容,而且我已经设置好了IIS等等,所以这似乎有点繁重。但这都是学术问题,因为它拒绝在我的服务器上运行,说“您的系统不受支持”或类似的话。(服务器是Windows Server 2008 Standard SP2,所以我真的不知道它的问题是什么)。
求救!
“这太荒谬了,这应该不会那么难 – 或许根本就不难,但肯定是个被严格保密的秘密!”

我猜 .NET Framework 4.0 会为你完成这个。 - James Westgate
1
@James:只有当应用程序针对 .Net 4.0(它不是,否则他会得到不同的错误)时才会出现这种情况。 - SLaks
1
詹姆斯错了,.net 4可再发行组件不包括MVC 2。抱歉。 - Eduardo Molteni
5个回答

9
为了部署MVC应用程序,您只需要确保引用设置为复制到bin文件夹中。具体来说,这些DLL必须在其中...
System.ComponentModel.DataAnnotations.dll
System.Web.Abstractions.dll
System.Web.Mvc.dll
System.Web.Routing.dll

注意:将引用复制到您的 bin 文件夹中。

实际上,您可以按照以下步骤进行操作:

  1. 右键单击项目的 "引用" 部分中的引用
  2. 选择 "属性"
  3. 找到 "复制本地" 属性并将其设置为 "true"

请注意!

System.Web.Abstractions.dll
System.Web.Routing.dll

如果未安装.NET 3.5 SP1,则只需要这两个文件 - 如果没有安装SP1,您需要包含这两个dll文件,这些文件是SP1的一部分,并且MVC需要它们进行路由。

@Sohnee:我猜 System.Web.dll(和其他除了 Mvc 的文件)已经存在,因为我已经有 ASP.NET 了? - Gary McGill
@Sohnee:你能解释一下“设置引用以进行复制”是什么意思吗?我想我知道,但为了方便其他人…… - Gary McGill
你好,我已经将复制本地信息添加到答案的底部。我发现需要将这5个全部设置为复制本地。 - Fenton
出于某种原因,我发现我只需要MVC dll,因为其他的已经在GAC中了。谢谢。 - Gary McGill
很酷 - 我猜这真的取决于服务器和安装了什么! - Fenton

5

正确答案由Darin Dimitrov在此回答中给出(为了方便起见在此发布):

您可以进行服务器安装,无需安装Visual Studio:

msiexec /i AspNetMVC2.msi /l*v .\mvc.log MVC_SERVER_INSTALL="YES"

现在你可能会问,这个 AspNetMVC2.msi 是从哪里来的。实际上,您可以从这里下载 AspNetMVC2_VS2008.exe ,然后将 .exe 重命名为 .zip ,在里面你会找到你要的东西(在 mvcruntime 子文件夹中)。

小提示:打开压缩文件后,您应该进入子文件夹“.rsrc_1\”以找到“mvcruntime”子文件夹。 - Jehy

1

将 System.Web.Mvc.dll 从开发机器复制到 Web 服务器上应用程序的 Bin 文件夹(或全局程序集缓存)中。

此文件来自 AspNetMVC2_VS2008.exe。


@SLaks:谢谢,如果这样可以的话那就好了。但是,一个“System.*”dll的“正确”位置肯定是在GAC中,因此肯定应该有一个安装程序或类似的东西吧?像这样简单地复制文件似乎非常随意。 - Gary McGill

1

您不需要将这些文件放在服务器GAC中。您可以这样做,但并非必须。

您只需将这些文件复制到服务器上的/bin目录即可。实际上,如果您在引用上右键单击时将Copy Local设置为true,它就会这样做。

您需要确保该文件的引用路径:

System.Web.Mvc.dll

在你的/bin目录中。


1

看看我的问题 - 由于某些原因它在我的服务器上无法工作。 - Gary McGill

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