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

Posted

技术标签:

【中文标题】如何配置 MVC6 应用程序以在 IIS 上运行?【英文标题】:How to configure an MVC6 app to work on IIS? 【发布时间】:2015-01-09 03:43:10 【问题描述】:

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

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

实际上,我们的进程是在 IIS 和 TeamCity 中设置的,但不适用于这样的测试应用程序:)。

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

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

【问题讨论】:

您能否详细说明您认为它不起作用的原因? @Cory - 我收到一个错误页面,告诉我我没有查看文件夹的权限。 你能告诉我们文件夹结构吗? 如果是什么?在服务器框中,该站点已发布到c:\inetpub\websites\sitename。发布的站点有一个 src 和 wwwroot 文件夹以及 3 个.cmd 文件 【参考方案1】:

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

使用 Visual Studio 2015 Preview 作为您的 IDE,

    创建一个 ASP .NET 5 Starter 应用程序。 检查它是否在 IIS 之外工作。

    完成后,发布应用程序。在本例中,我选择了位置C:\PublishWebApp

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

    禁用预编译

    选择amd64

    (见下图)

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

    创建一个新网站。

    6.1 : 选择wwwrooot 文件夹作为网站的物理路径。在这个例子中,它是C:\PublishWebApp\wwwroot

    检查网站以查看它是否正常工作。如果您遇到任何错误,请在此处发布。

如果在上图的 Publish Web Settings 窗口中勾选了预编译选项,那么您必须

    转到您已发布的 Web 应用程序的 wwwroot 文件夹。在本例中为C:\PublishWebApp\wwwroot。 找到web.config

    在您发布的应用程序的文件夹内,approot 文件夹内有一个packages 文件夹,该文件夹应包含一个以您的应用程序命名的文件夹,下面有一个版本文件夹。该文件夹内应该是一个名为root 的文件夹。在web.config 中,将键kre-app-base 的值设置为root 文件夹。作为参考,请参见下面的代码行。在本例中,应用程序名称为 WebApplication10。

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

【讨论】:

谢谢,我会在星期一试试这个 - 我想我在发布期间打勾了预编译,所以希望这就是问题:)。 如果预编译选项被勾选,那么它也可以工作。但为此,您必须进行小设置。我会更新我的答案。 为了让它工作,我取消了预编译的应用程序配置,重要的是,将 IIS 指向wwwroot 文件夹。我的实际问题是我让 IIS 指向我发布到的同一个文件夹 - 这是不正确的:)。大规模的 n00b 移动。附:谢谢@dotnetstep! @Vartan Simonian:你知道如何使用 Web Deploy 工具将 asp.net 5 站点发布到 IIS 中吗? @WillHuang 我还没做过,但这可能会有所帮助:asp.net/mvc/overview/deployment/visual-studio-web-deployment/…【参考方案2】:

我花了几个小时调试这个问题终于解决了,步骤:

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

在输出文件夹中,将“wwwroot”文件夹映射到 IIS 中的应用程序(请勿将其映射到 sup-applicaiton,只有 IIS 中的 ROOT 应用程序才能与 DNX 一起使用,例如“默认网站”)。

【讨论】:

【参考方案3】:

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

如果您尝试将应用程序添加到站点,则几乎有很多解决方法和需要的额外配置,详见链接。

对于初学者:

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

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

我知道,如果您要向站点添加应用程序,那么现在每个人都应该知道部署过程中存在一些陷阱和急需的改进。

【讨论】:

以上是关于如何配置 MVC6 应用程序以在 IIS 上运行?的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 上使用 .NET Core 运行 ASP.NET 5 (MVC 6)

IIS 拦截预检 MVC6

如何使用 ASP.NET Core RC2 MVC6 和 IIS7 获取当前 Windows 用户

HTTP 错误 403.14 - 禁止 asp.net 5 和 MVC 6 iis10

如何使用 PowerShell 在 IIS 中停止和启动各个网站?

如何配置应用程序以在具有高 DPI 设置(例如 150%)的机器上正确运行?