在 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 之外,基本上还有四件事你必须做:
安装 .NET Core Windows 服务器托管包。在这里能找到它
https://go.microsoft.com/fwlink/?linkid=837808
在应用程序依赖项中包含对 Microsoft.AspNetCore.Server.IISIntegration 包的依赖项。通过向 WebHostBuilder() 添加 .UseIISIntegration() 扩展方法,将 IIS 集成中间件合并到应用程序中。
在你的项目中打开cmd和运行 dotnet publish
在 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 以及如何开始的更多信息:
在 Visual Studio 2015 年,您可以通过右键单击项目并转到属性轻松地将 MVC 应用程序设置为使用完整的 IIS。
尚不清楚如何在 Visual Studio 2017 年的 vanilla .NET Core Web (MVC) 项目中执行此操作。
我在 Google 上找不到任何相关信息 - 我是不是找错地方了?
您可以在 iis 后面托管它。
除了安装 iis 之外,基本上还有四件事你必须做:
安装 .NET Core Windows 服务器托管包。在这里能找到它 https://go.microsoft.com/fwlink/?linkid=837808
在应用程序依赖项中包含对 Microsoft.AspNetCore.Server.IISIntegration 包的依赖项。通过向 WebHostBuilder() 添加 .UseIISIntegration() 扩展方法,将 IIS 集成中间件合并到应用程序中。
在你的项目中打开cmd和运行 dotnet publish
在 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 以及如何开始的更多信息: