问题描述
我使用.net core 2.1并将其发布到IIS 8.5。我很难理解.NET核心托管的概念。
program.cs是
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
您看到没有UseKestrel
字,但是在响应标头中却显示“服务器是红K”。
在项目文件中也没有<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
。而且我没有UseIISIntegration
这样的代码。
我的问题摘要:
解决方法
如果您比较文档:
v 2.1:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.1
和 v 2.2:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2
您可能会发现版本之间的最初区别。
在2.1中:
由于ASP.NET Core应用程序在与IIS工作进程不同的进程中运行,因此该模块还处理进程管理。当第一个请求到达时,模块将启动ASP.NET Core应用程序的进程,如果崩溃,则重新启动应用程序。这与在Windows中由Windows进程激活服务(WAS)管理的IIS中在进程内运行的ASP.NET 4.x应用程序具有相同的行为。
在2.2版中:
ASP.NET Core模块是本机IIS模块,可插入IIS管道以执行以下任一操作: 在IIS工作进程(w3wp.exe)内托管一个ASP.NET Core应用程序,称为进程内托管模型。 将Web请求转发到运行Kestrel服务器的后端ASP.NET Core应用,该应用称为进程外托管模型。
2.2版默认为Incesscess。
我在进程模型v 3.1上测试了我的设置,它可以按预期工作。本地化返回茶est,在IIS上返回IIS服务器。
您的所有答案都在这两个链接下。
,您的问题:
- 为什么使用Kestrel?
- 是进程内还是进程外?
- 哪个文件可以处理这种情况?我假设它是AspNetCoreModule,但是哪个文件?(w3wp?)
答案:
- 因为您使用
dotnet run
命令来运行。 - 进程
-
w3wp.exe
和dotnet.exe
- 您的托管模式为:
- 您的托管模式不是: