在 Visual Studio 2017 中设置 .NET Core MVC 应用程序以使用完整的 IIS(不是 IIS Express)

Setup .NET Core MVC app in Visual Studio 2017 to use full IIS (not IIS Express)

在 Visual Studio 2015 年,您可以通过右键单击项目并转到属性轻松地将 MVC 应用程序设置为使用完整的 IIS。

尚不清楚如何在 Visual Studio 2017 年的 vanilla .NET Core Web (MVC) 项目中执行此操作。

我在 Google 上找不到任何相关信息 - 我是不是找错地方了?

您可以在 iis 后面托管它。

除了安装 iis 之外,基本上还有四件事你必须做:

  1. 安装 .NET Core Windows 服务器托管包。在这里能找到它 https://go.microsoft.com/fwlink/?linkid=837808

  2. 在应用程序依赖项中包含对 Microsoft.AspNetCore.Server.IISIntegration 包的依赖项。通过向 WebHostBuilder() 添加 .UseIISIntegration() 扩展方法,将 IIS 集成中间件合并到应用程序中。

  3. 在你的项目中打开cmd和运行 dotnet publish

  4. 在 iis 上托管已发布的应用程序。重要的是,在应用程序池中,.NET CLR 版本设置为 'No Managed Code'.

有一篇更详细的文章介绍了如何将您的应用程序发布到 iis。

https://docs.microsoft.com/en-us/aspnet/core/publishing/iis

我没有找到直接从 visual studio 2017 年开始的方法。

更新: 您可以使用 FlubuCore 工具(C# fluent builder)自动为您执行第 3 步和第 4 步。您必须编写如下所示的 flubu 脚本(示例仅适用于第 4 步):

protected override void ConfigureTargets(ITaskContext session)
{
    session.CreateTarget("iis.install").Do(IisInstall);
}

private static void IisInstall(ITaskContext context)
{
    context.Tasks().IisTasks()
        .CreateAppPoolTask("SomeAppPoolName")
        .ManagedRuntimeVersion("No Managed Code")
        .Mode(CreateApplicationPoolMode.DoNothingIfExists)
        .Execute(context);

    context.Tasks().IisTasks()
        .CreateWebsiteTask()
        .WebsiteName("SomeWebSiteName")
        .BindingProtocol("Http")
        .Port(2000)
        .PhysicalPath("SomePhysicalPath")
        .ApplicationPoolName("SomeAppPoolName")
        .WebsiteMode(CreateWebApplicationMode.DoNothingIfExists)
        .Execute(context);
}

然后将其与 visual studio 2017 运行 此脚本与 flubu dotnet cli 工具集成,在预构建或后构建事件中使用命令 'dotnet flubu iis.install'。我宁愿 运行 明确地从命令行使用该工具。

您可以在此处找到有关 flubu 以及如何开始的更多信息: