【问题标题】:Deploying an ASP MVC application to Windows 2008 server running IIS 7.5将 ASP MVC 应用程序部署到运行 IIS 7.5 的 Windows 2008 服务器
【发布时间】:2014-04-25 14:29:56
【问题描述】:

我一直在四处寻找有关如何执行此操作的可靠信息。我发现的大多数信息都是关于 Visual Studio 20xx 的 Web 部署,但我不确定这是否是首选方法。我希望能够“安装”一个 MVC 网站/Web 应用程序来暂存,然后在测试/缺陷修复周期之后,进行另一个构建并将其安装在生产环境中。大家是怎么做的呢?文档如此松散和有限,这似乎很奇怪。这不是所有 ASP.NET 开发公司都在做的事情吗?有人可以向我解释将 Web 应用程序推出和更新到 Win2008 IIS 7.5 的最佳方法吗?基本上我正在寻找一个打包好的安装程序。

【问题讨论】:

  • 您也可以从命令行使用MSBUILD 手动构建您的项目,这就是我们在构建服务器上使用稍微修改过的“Package-Web”版本:sedodream.com/2011/12/24/PackageOncePublishAnywhere.aspx您安装一个 nuget 包,使您能够将曾经构建的项目发布到不同的环境。 (但你也可以绕过 nuget 安装,它只是设置了一些额外的 msbuild 文件来挂钩到构建过程,一开始看起来很神奇,但可以根据你的需要进行定制;)
  • 好吧,我认为我已经正确设置了服务器以托管 Web 部署,但是当我尝试从 VS2013 部署时,我收到一个错误“无法加载文件或程序集 'Microsoft.Web.Deployment , Version=9.0.0, Culture=neutral, PublicKeyToken=xxxx' 或其依赖项之一。系统找不到指定的文件”。此错误是否意味着我尝试从中发布的本地计算机缺少 dll 或远程服务器?我有完整的 vs2013 高级版,为什么会丢失这个 dll?

标签: asp.net-mvc iis-7.5 windows-server-2008-r2


【解决方案1】:

有多种方法可以发布网站。解决方案取决于许多因素,例如您是在内部发布还是在外部发布。如果您正在为第三方创建安装以在他们自己的服务器上安装等。

如果您可以直接访问您的 Web 服务器的文件系统(即网络共享),并且您不关心具有单独构建服务器等的正式构建过程,那么请使用 Visual 的内置 Web 发布功能Studio 是最简单的方法。您只需直接发布到网站虚拟目录的文件系统。这非常有效,并且支持开箱即用的大多数场景。

但是,如果您是一个更大的组织并且想要更多控制。然后,您可以在服务器上安装 WebDeploy 并使用 WebDeploy 代理从 Visual Studio 发布,尽管 WebDeploy 设置起来很棘手并且没有很好的文档记录。 WebDeploy 也可以在 Visual Studio 之外使用,并且具有非常丰富的功能集。

有些人使用版本控制来部署到他们的网站。他们进行构建,然后将其检查到版本控制中,然后“获取最新”到服务器虚拟目录。这使他们能够轻松回滚到以前的版本或时间点。

其他人使用 MSBuild、OctopusDeploy、Chuck Norris 等构建和部署工具......

还有一些人使用持续集成工具,它们可能使用我已经提到的一些工具。 TeamCity、CruiseControl.net 等 CI 服务器...

那里有大量信息,并且有很多方法可以做到这一点......因为其中大部分是个人选择并且取决于您的情况,我们不能真正明确地说“做这个”或“做那”。

【讨论】:

  • 我已经用 web 部署和代理设置了服务器,一切都在运行,但我无法从 VS2013 部署,因为它给了我一个缺少 dll 的错误(请参阅我上面的评论)。我有 VS2013 Premium,所以我不确定为什么缺少 dll。
  • @u84six - 显然您使用 Web 平台安装程序在 IIS 上安装 WebDeploy。这显然是导致此错误的原因。您需要在 IIS 上手动下载安装 WebDeploy。 iis.net/downloads/microsoft/web-deploy下载合适的x86或者x64版本,不是WebPI
  • 实际上,我必须在客户端机器(运行 VS2013 的机器)上安装 Web Deploy,以便加载缺少的依赖项。这很奇怪,因为我使用相同的 VS2013 版本在家中使用相同的 Web 部署过程,并且我不必安装 Web 部署依赖项。这是唯一让我感到困惑的事情。
  • 补充一点,是的,我还注意到很难找到用于 Web 部署的好的在线文档;对我个人而言,这本书帮助很大:Inside the Microsoft Build Engine: Using MSBuild and Team Foundation BuildSayed Ibrahim Hashimi(不,那不是我;),但 IIRC,他是在微软从事 MSBUILD-project 的人之一)
【解决方案2】:

好的,我在远程主机 (Windows Server 2008 R2) 和运行 VS2013 的客户端之间进行了 Web 部署。我找到了一个很棒的网站,里面有一个演练。

Installing and using Web Deploy on server 2012

这适用于 Windows server 2012,但也适用于 Win 2008。

在我浏览完所有内容后,部署失败并出现错误:“无法加载文件或程序集 'Microsoft.Web.Deployment, Version=9.0.0.0...”

为了解决这个问题,我在运行 VS 2013 的机器上下载并安装了最新的 Web Deploy 包。当时,最新版本是 3.5:

Web Deploy 3.5

这带有客户端所需的依赖 dll。奇怪的是,我不必在运行相同版本 VS 2013 的家用机器上执行此部分,所以我不知道为什么在这种特殊情况下需要这样做。

所有这些都完成后,我能够以管理员身份远程部署我的网络应用程序。由于安全问题,我不建议在主机上为管理员设置 Web 部署,但我上面链接的演练显示了如何为远程连接创建用户帐户。

编辑:我还找到了一个很好的故障排除指南,可以帮助我解决问题: Web Deploy Troubleshooting

【讨论】:

    【解决方案3】:

    为此,我们使用内置的 Visual Studio web publishing 并将其与 web.config transformations 结合起来为每个环境部署适当的配置(设置、连接字符串等)。

    设置完成后,只需选择所需的发布配置文件并按“发布”即可。

    【讨论】:

    • 所以你从你的构建服务器运行 VS 并推出到暂存和生产?
    • 显然需要正确设置登台和生产服务器以支持 Web 发布。那么对于服务器,您是否手动创建网站并启用它以进行 Web 部署?
    • 我们直接从 Visual Studio 发布。不涉及构建服务器。
    • 你也运行数据库模式吗?如果数据库尚未创建,您可以以某种方式运行 sql 脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2017-06-07
    • 1970-01-01
    相关资源
    最近更新 更多