如何配置 MVC6 应用程序以在 IIS 上运行?

How to configure an MVC6 app to work on IIS?

所以我在 Visual Studio 2015 年构建了一个 MVC6 应用程序,并且已经设法解决了大部分问题,但是,我还没有完成部署。

在 MVC4(我之前使用的)中,我们的流程*被发布到一个文件夹,然后在 IIS 中设置网站(右键单击 Sites -> Add Website)。

我遵循了这个过程,显然设置 IIS 网站并发布到正确的文件夹是微不足道的...但这对我来说实际上不起作用。

我们在 Windows Server 2012 上运行 IIS 8,我们已经在服务器上安装了 .Net 4.6 运行时。

以下步骤对我有用,应该可以帮助您在 IIS 上托管您的项目。

使用 Visual Studio 2015 预览作为您的 IDE,

  1. 创建一个 ASP .NET 5 入门应用程序。
  2. 检查它是否在 IIS 之外工作。
  3. 完成后,发布应用程序。在此示例中,我选择了位置 C:\PublishWebApp.

    3.1。发布您的应用程序时,请确保您拥有:

    • 禁用预编译
    • Selected amd64

      (见下图)

  1. 发布成功后,转到 C:\PublishWebApp。您应该会在里面看到文件夹 approotwwwroot
  2. 现在打开 IIS 管理器(我假设您已启用 ASP .NET 4.5 功能)
  3. 创建一个新网站。

    6.1 : Select wwwrooot 文件夹作为网站的物理路径。本例中为C:\PublishWebApp\wwwroot.

  4. 检查网站是否正常。如果您遇到任何错误,请在此处post它们。

如果在上图中的发布 Web 设置 window 中勾选了预编译选项,那么您必须

  1. 转到您已发布的 Web 应用程序的 wwwroot 文件夹。在这个例子中,它是 C:\PublishWebApp\wwwroot.
  2. 找到web.config.
  3. 在您发布的应用程序的文件夹中,approot 文件夹中有一个 packages 文件夹,其中应包含一个以您的应用程序命名的文件夹,其中一个文件夹用于下面的版本。该文件夹内应该有一个名为 root 的文件夹。在 web.config 中,将键 kre-app-base 的值设置为 root 文件夹。作为参考,请参阅下面的代码行。在此示例中,应用程序名称为 WebApplication10.

    <add key="kre-app-base" value="..\approot\packages\WebApplication10.0.0\root" />
    

我花了几个小时调试问题终于成功了,步骤:

1) 使用 visual studio 将您的 MVC6 应用程序发布到文件系统中,确保您选择了正确的 DNX 目标版本,在我的例子中是 dnx-clr-win-x64.1.0.0-rc1-update1。

在输出文件夹中将 "wwwroot" 文件夹映射到您在 IIS 中的应用程序(请勿将其映射到支持应用程序,只有 IIS 中的 ROOT 应用程序可以使用 DNX,例如 "Default Web Site")。

我刚刚花了一天的时间试图让它工作。我发现这个 here(搜索 GuardRex 的帖子)非常宝贵,完成已接受答案给出的步骤,这就是它的开始。

如果您尝试将应用程序添加到站点,几乎需要大量变通方法和额外配置,详见 link。

初学者:

1)确保安装了 HttpPlatform 处理程序here

2) 看起来很明显,但请确保您的服务器上安装了 .net5 here

我知道这是在向站点添加应用程序时发生的情况,但目前每个人都应该意识到部署过程中存在一些陷阱和急需的改进。