【问题标题】:How can I install asp.net mvc 2 on IIS7?如何在 IIS7 上安装 asp.net mvc 2?
【发布时间】:2010-05-18 04:22:18
【问题描述】:

我已经开发了一个 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's blog 链接到的另一个选项是Microsoft Web Platform Installer。现在,我不想安装的不仅仅是 MVC2,而且我已经设置了 IIS 等,所以这似乎有点重。但这都是学术性的,因为它拒绝在我的服务器上运行,说“您的系统不受支持”或类似的话。 (服务器是Windows Server 2008 Standard SP2,所以我真的不知道是什么问题。

帮助!

[这太难了——或者根本不难,但肯定是一个保守的秘密!]

【问题讨论】:

  • 我猜.net framework 4.0 会为你做这件事
  • @James:仅当应用程序以 .Net 4.0 为目标时(不是,否则他会得到不同的错误)
  • 詹姆斯错了。 .net 4 可再发行组件不包括 MVC 2。抱歉。

标签: asp.net-mvc iis-7


【解决方案1】:

要部署 MVC 应用程序,您只需确保将引用设置为复制到您的 bin 文件夹。具体来说,这些 DLL 需要在其中...

System.ComponentModel.DataAnnotations.dll
System.Web.Abstractions.dll
System.Web.Mvc.dll
System.Web.Routing.dll

注意:复制对 bin 文件夹的引用。

在实践中,您可以按照以下步骤执行此操作:

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

请注意!

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

如果尚未安装 .NET 3.5 SP1,则仅需要这两个 - 如果您没有 SP1,则需要包含这两个 dll,它们是 SP1 的一部分,并且 MVC 需要用于路由。

【讨论】:

  • @Sohnee:大概 System.Web.dll(以及除 Mvc 之外的其他)已经存在,因为我确实有 ASP.NET?
  • @Sohnee:您能解释一下“将引用设置为复制”是什么意思吗?我想我知道,但为了他人的利益……
  • 您好,我已将复制本地信息添加到答案的底部。我发现我需要将所有 5 个设置为复制本地。
  • 谢谢。出于某种原因,我发现我只需要 MVC dll,因为其他人已经在 GAC 中。
  • 酷 - 这真的取决于服务器和我猜已经安装了什么!
【解决方案2】:

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

您可以进行不需要安装 Visual Studio 的服务器安装:

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

现在您可能会问这个AspNetMVC2.msi 来自哪里。实际上,您从here 下载AspNetMVC2_VS2008.exe,将.exe 重命名为.zip,然后您会在其中找到您要查找的内容(在mvcruntime 子文件夹中)。

【讨论】:

  • 请注意:打开存档后,您应该去子文件夹“.rsrc_1\”找到“mvcruntime”子文件夹。
【解决方案3】:

将 System.Web.Mvc.dll 从您的开发机器复制到 Web 服务器上应用程序的 Bin 文件夹(或 GAC)。

此文件来自 AspNetMVC2_VS2008.exe。

【讨论】:

  • @SLaks:谢谢,如果这样就可以了。但是“System.*” dll 的“正确”位置肯定在 GAC 中,在这种情况下,肯定应该有安装程序或其他东西吗?像这样复制文件似乎非常随意。
【解决方案4】:

您不需要将这些文件放在服务器 GAC 中。可以,但没必要。

您可以简单地将这些文件复制到服务器上的/bin 目录中。事实上,如果你在引用上右击时将Copy Local 设置为true,它就会这样做。

您需要确定此文件的引用路径:

System.Web.Mvc.dll

在您的/bin 目录中。

【讨论】:

    【解决方案5】:

    我发现运行 Web 平台安装程序工具非常适合让服务器和开发机器运行。可以在这里找到...http://www.microsoft.com/web/default.aspx

    【讨论】:

    • 查看我的问题 - 由于某种原因它在我的服务器上不起作用。
    猜你喜欢
    • 2012-05-09
    • 2011-05-21
    • 1970-01-01
    • 2012-01-02
    • 2013-11-26
    • 2011-04-02
    • 2010-10-02
    • 2011-05-21
    • 1970-01-01
    相关资源
    最近更新 更多