Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 我不知道';t使用Kestrel作为web服务器,并在代码中启用IIS集成,但显示服务器为Kestrel的响应头_Asp.net Core_Iis_.net Core_Kestrel Http Server - Fatal编程技术网

Asp.net core 我不知道';t使用Kestrel作为web服务器,并在代码中启用IIS集成,但显示服务器为Kestrel的响应头

Asp.net core 我不知道';t使用Kestrel作为web服务器,并在代码中启用IIS集成,但显示服务器为Kestrel的响应头,asp.net-core,iis,.net-core,kestrel-http-server,Asp.net Core,Iis,.net Core,Kestrel Http Server,我使用.NETCore2.1并将其发布到IIS8.5。我很难理解.NET核心托管的概念 该程序是.cs public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDe

我使用.NETCore2.1并将其发布到IIS8.5。我很难理解.NET核心托管的概念

该程序是.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();
   }
公共类程序
{
公共静态void Main(字符串[]args)
{
BuildWebHost(args.Run();
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.Build();
}
您可以看到没有
UseKestrel
word,但在响应头中,它显示服务器是Kestrel

在项目文件中,进程中也没有
InProcess
。我没有像
useiinsintegration
这样的代码

我的问题摘要:

  • 为什么它使用红隼
  • 进程内
    还是
    进程外
  • 哪个文件处理这个特殊情况?我假设它是
    AspNetCoreModule
    ,但是是哪个文件?(w3wp?)
  • 你的问题:

  • 为什么用红隼
  • 是在进行中还是在进行中
  • 哪个文件处理这个特殊情况?我假设它是AspNetCoreModule,但是是哪个文件?(w3wp?)
  • 答复:

  • 因为您使用
    dotnet run
    命令来运行
  • 输出过程
  • w3wp.exe
    dotnet.exe
    • 您的托管模式是:

    • 您的托管模式不是:


    图像源和参考文档:

    如果您比较文档:

    v 2.1:

    及 v 2.2:

    您可以在一开始就看到版本之间的差异

    在2.1中:

    由于ASP.NET核心应用程序在独立于IIS工作进程的进程中运行,因此该模块还处理进程管理。当第一个请求到达时,模块启动ASP.NET核心应用程序的进程,并在应用程序崩溃时重新启动该应用程序。这与在IIS中运行的ASP.NET 4.x应用程序的行为基本相同,这些应用程序由Windows process Activation Service(WAS)管理

    在第2.2节中:

    ASP.NET核心模块是一个本机IIS模块,可插入IIS管道以执行以下操作之一: 在IIS工作进程(w3wp.exe)内托管一个ASP.NET核心应用程序,称为进程内托管模型。 将web请求转发到运行Kestrel服务器的后端ASP.NET核心应用程序,称为进程外托管模型

    进程中是v2.2的默认值

    我在V3.1的进程内模型上测试了我的设置,它按照您的预期工作。在本地,它返回kestrel,在IIS上,它返回IIS服务器


    所有答案都在这两个链接下。

    您可以创建一个新的ASP.NET核心项目,转到源代码目录,运行命令
    dotnet run
    ,您将看到Kestrel服务器的标题。我想是的,但我希望任何链接或ILSpy或源代码都可以。您好,我的本地和IIS都在V2.1中返回Kestrel。对v3.1不太清楚