IPv6的本地回环地址形式:0:0:0:0:0:0:0:1,同IPV4中127.0.0.1地址的含义一样,表示节点自已,也可以是::1,大多数windows和linux电脑上都将localhost指向了...ListenLocalhost 和ListenAnyIP 区别 通过编码配置Kestrel监听端口有三个方法可以实现ListenLocalhost、ListenAnyIP、Listen,其中ListenLocalhost...等同于Listen的IPAddress.IPv6Loopback 和IPAddress.Loopback,ListenAnyIP等同于Listen的IPAddress.IPv6Any和IPAddress.Any...进行new创建实例,而AnyIPListenOptions和LocalhostListenOptions都继承类ListenOptions,并且重写BindAsync方法。...context).ConfigureAwait(false); } } } 小结:通过以上分析,端口绑定时,建议使用IPAddress.Any,可以支持ipv6和ipv4
IIS本身自带了备份和恢复IIS设置的功能。...在恢复IIS设置之前需要备份IIS。...同样是打开“Internet服务管理器”,也是在原来的服务器名称上右击,在弹出的菜单中点击“备份/还原配置”,会出现和附图大致相同的窗口,不过这一次与上一次不同,原来的备份(如“IIS备份1”)就会出现在列表框里...点击[还原]按钮,系统会弹出询问窗口,提示用户“还原是一项耗时的操作,它将覆盖所有当前的设置并导致全部服务的停止和重新启动,您确定要继续吗?”。...自动备份IIS设置 不需要任何iis备份工具,手工打造一份“iis备份还原工具”吧。
进程外(out-of-Process)托管 有2个Web服务器 ,内部Web服务器和外部Web服务器。 内部Web服务器是Kestrel, 外部Web服务器可以是IIS,Nginx或Apache。...当我们使用. net Core CLI 运行 asp. net Core 应用程序时, Kestrel 是唯一用于处理和处理传入 HTTP 请求的 web 服务器。 ?...kestrel直面互联网 Kestrel 还可以与反向代理服务器 (如 IIS、Nginx 或 Apache) 结合使用。 ?...因为Kestrel使用 "进程外(out-of-process)托管", 结合反向代理服务器是一个不错的选择, 因为它提供了额外的配置和安全性层。它可能会更好地与现有基础设施集成。...Kestrel处理请求并将响应发送到IIS Express。IIS Express反过来将该响应发送到浏览器。
一种用于IIS Express(IIS服务器),另一种用于Kestrel服务器。...在Visual Studio中,您可以找到上述两个配置文件(IIS Express和FirstCoreWebApplication),如下所示。...如果选择 IIS Express,则它将使用 IIS 服务器,如果您选择 FirstCoreWeb 应用程序,则它将使用 Kestrel 服务器。...属性值以及应用程序项目文件中的AspNetCoreHostingModel元素值将确定将要使用和处理传入HTTP请求的内部和外部Web服务器(反向代理服务器)。...值,而Kestrel是唯一将托管和处理传入请求的服务器。
结论是 IIS InProcess > Kestrel > IIS Out of Process。...测试方法、工具和结论可以查看 Rick 的文章: * https://weblog.west-wind.com/posts/2019/Mar/16/ASPNET-Core-Hosting-on-IIS-with-ASPNET-Core...(10089) Linux + Nginx (3509) Linux + Caddy (3485) Windows + IIS Out of Process (2820) 结果和 Rick 当年对 ASP.NET...Rick 的测试中,IIS In Process 的性能竟然能超越 Kestrel,他曾经表示意外。今天 IIS In Process 还是被 Kestrel 吊打了,这好像还挺合理的。...在反代模式下,Nginx 和 Caddy 的性能基本相同,并且都能吊打 IIS Out of Process,这非常政治正确,毕竟说好的 IIS 性能差。
这个CreateDefaultBuilder()方法执行几个任务,如: 将 Kestrel 用作 Web 服务器并启用 IIS 集成。 从种配置源中加载配置。...和IIS Express的配置都是作为进程内托管(InProcess)。...内部Web服务器是Kestrel, 外部Web服务器可以是IIS,Nginx或Apache。 使用InProcess托管,只有一个Web服务器,承载asp.net Core应用程序的IIS。...因此,在内部和外部Web服务器之间,他们的代理和请求不没有性能的损失。 什么是Kestrel Kestrel是ASP.NET Core的跨平台Web服务器。....于Kestrel,用于托管和执行应用程序的进程是dotnet.exe。 因此,当我们导航到http:// localhost:5000时,我们将看到显示进程名称dotnet。
如果你的应用只接收来自内部网络的请求,你可以只使用Kestrel本身。 ? 如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。...IIS with Kestrel 当你使用IIS或者IIS Express作为对ASP.NET Core的反向代理时,ASP.NET Core应用将运行在由该IIS工作进程分离出的一个进程中。...Kestrel和WebListener服务器都只提供了一个单一的功能,IServerAddressesFeature,但是不同的服务器实现可能会显示额外的功能。...你可以自由地实现你的应用所需的功能接口,但至少必须支持IHttpRequestFeature和IHttpResponseFeature接口。...下一步 更多的信息, 请参考以下资源: Kestrel Kestrel with IIS Kestrel with Nginx Kestrel with Apache WebListener
在内部,它配置 Kestrel(用于ASP.NET的内部 Web 服务器)、IIS整合和其他配置。...然后在 IIS 工作程序(即 iIS 的 w3wp.exe 和 Iisxpress.exe 的 IISExpress)中托管应用程序。...一种用于IIS Express(IIS服务器),另一种用于Kestrel服务器。...使用 IIS Express 运行应用程序: 如果您使用 IIS Express 运行应用程序,则它将使用启动设置.json 文件中提及的 URL 和端口号。...内部 Web 服务器,即Kestrel Web 服务器 以及可使用 IIS、Apache 和 Nginx 的外部 Web 服务器。
目录 测试目标 测试工具 环境准备 开始测试 ASP.NET Core Kestrel vs ASP.NET Core IIS ASP.NET Core IIS vs ASP.NET IIS ASP.NET...2 ASP.NET Core vs ASP.NET Windows IIS vs IIS 相同平台相同宿主不同框架间性能差距 3 ASP.NET Core vs ASP.NET Windows Kestrel...1 - ASP.NET Core vs ASP.NET Core(Kestrel vs IIS) ASP.NET Core 环境:物理机器1 OS:Windows 10 RS 1 Host:Kestrel...):45636.43 QPS(IIS):15130.97 这个结果难免令人诧异,程序部署在IIS上和使用Kestrel竟然差别如此之大,我们知道实际上即便部署在IIS上,实际上内部还是调用的Kestrel...这个结果说明了,在同样Windows+IIS环境中,ASP.NET是具有优势和竞争力的,可以预见 ASP.NET 应该还不会淘汰的太快。
如果不知道什么是InProcess模式的话,简单来说,就是原先ASP.NET Core确实可以跑在IIS上,但其实是由一个名为AspNetCoreModule的IIS模块调用dotnet.exe启动kestrel...去测试,用kestrel在开发环境测完以后直接使用Azure DevOps部署到Azure App Service上跑,结果今天升级到InProcess模式以后,生产环境爆了,而开发机的kestrel怎么弄都是好的...最终发现,在Kestrel下运行的时候,Environment.CurrentDirectory指向的是应用根目录,而在IIS的InProcess模式下运行的时候,则指向系统目录,最终导致应用里只要间接或直接使用...我们可以利用IHostingEnvironment接口里提供的ContentRootPath属性来获取当前应用目录的绝对路径,这是在Kestrel和IIS中行为一致的。...ASP.NET Core 2.2 以后,再也不能想当然地认为开发ASP.NET Core 用不用IIS都无所谓了,真的是有些东西在IIS和Kestrel下行为不一致,因此推荐大家如果生产环境在使用IIS
何时使用Kestrel和反向代理服务器 如果你的应用只接收来自内部网络的请求,你可以只使用Kestrel本身。...因为Kestrel不支持在多进程间分享同一端口,所以应用并不能直接和Kestrel合作。当你在某个端口上配置Kestrel运行侦听时,不算主机头如何标识,Kestrel会为该端口处理所有的流量。...有关于当你使用IIS作为反向代理时,URL绑定是如何工作的信息,请参考ASP.NET Core 模块。 Kestrel URL前缀可以是以下格式中的任一种。...被指定时,Kestrel会尝试去绑定到IPv4和IPv6的环回接口。...on a Mac Using Visual Studio Code 本教程在本地仅使用Kestrel,在将该应用部署到Azure之后,它将在Windows上使用IIS作为反向代理服务器。
当您使用以下身份托管IdentityServer时,当前Windows身份验证可用: 使用Kestrel在使用IIS和IIS集成包的Windows上 使用HTTP.sys服务器在Windows上 在这两种情况下...使用Kestrel 当使用Kestrel,你必须运行“后面”的IIS和IIS integration: var host = new WebHostBuilder() .UseKestrel()...UseIISIntegration() .UseStartup() .Build(); 在使用WebHost.CreateDefaultBuilder方法设置WebHostBuilder时,Kestrel...此外,IIS(或IIS Express)中的虚拟目录必须启用Windows和匿名身份验证。...这在ConfigureServices中完成: services.Configure(iis => { iis.AuthenticationDisplayName = "Windows"; iis.AutomaticAuthentication
换句话说,您可以在 IIS、Ngnix 和 Apache Web 服务器上托管应用程序。...1、托管在 IIS 上(有凯斯特雷尔或没有凯斯特雷尔) 2、托管在 Kestrel 上(作为独立或与 Ngnix 和 Apache 服务器一起托管) 2 在 IIS 上 还能记得在 ASP.NET 中,...更多详情可百度maxAllowedContentLengthweb.config为了在 IIS 和 Kestrel 服务器之间创建反向代理,web.config 文件必须出现在已部署应用程序的内容根路径...这是提供给 IIS 的网站物理路径的相同位置。此设置仅适用于 IIS。 3 托管在 Kestrel 上 从 ASP.NET Core 2.0 开始, Kestrel 服务器也强加了自己的默认限制。...原因是,这个设置对于运行在 IIS 后面的 Kestrel 来说是无效的,在 IIS 后面应用的是正常的 web.config 限制。
ASP.NET Core 2.1+为IIS托管新增In-Process模型并作为默认选项(使用IISHttpServer替代了Kestrel,dotnet程序由IIS网站进程w3wp.exe内部托管)。...宏观设计 为解耦平台web服务器差异,程序内置Http服务组件Kestrel,由web服务器转发请求到Kestrel。 ?...老牌web服务器定位成反向代理服务器,转发请求到ASP.NET Core程序(分别由IIS ASP.NET Core Module和Nginx负责) 常规代理服务器,只用于代理内部主机对外网的连接需求,...Kestrel 与老牌web服务器解耦,实现跨平台部署。 Kestrel使ASP.NET Core具备了基本web服务器的能力,在内网部署和开发环境完全可使用dotnet.exe自宿模式运行。...得益此关系,ACM在创建dotnet.exe子进程时能指定环境变量,约定donet.exe接收(IIS转发的请求)的侦听端口。
进程内模型不使用 Kestrel,而是使用 IISHttpServer()直接在 IIS 应用程序池内部托管的新 Web 服务器实现,该实现与传统的 ASP.NET 被引入 IIS 的方式有些相似。...当然这些都是.NET Core 层面的处理,我们作为应用开发者,基本会去关心和留意它。 但是就是这个调整,大大的提高了 ASP.NET Core 在 IIS 上的请求吞吐量。...因为它避免了 IIS 和 Kestrel 之间可能存在的网络抖动。...使用 InProcess 模型时,则不会使用 Kestrel 服务(这个在我的书中有详细说明),而是直接与 IIS 的请求管道中的模块进行通信。...最后 尽管 IIS 被不停的边缘化以支持在 Linux 和 Docker 上托管,但请记住,如果发布到 云原生平台,如 Azure 的 WebAPP 或者其他未明确指定的平台,IIS 依然是 ASP.NET
和 IIS Express 的配置都是作为进程内托管(InProcess)。...下图说明了 IIS、ASP.NET Core 模块和进程内托管的应用之间的关系: ?...内部 Web 服务器是 Kestrel, 外部 Web 服务器可以是 IIS,Nginx 或 Apache。...使用 InProcess 托管,只有一个 Web 服务器,承载 asp.net Core 应用程序的 IIS。 因此,在内部和外部 Web 服务器之间,他们的代理和请求并没有性能的损失。...什么是 Kestrel Kestrel 是 ASP.NET Core 项目模板指定的默认 Web 服务器。
之后运行ASP.NET Core应用,IIS和Kestrel各司其职,前者专于安全性,可管理性等方面,后者专于性能,我们从两种技术中都能获得益处。...ANCM只和Kestrel协同工作,它不兼容于Weblistener。...支持的Windows版本: Windows 7和Windows Server 2008 R2和更高版本 查看或下载代码示例 ASP.NET Core 模块做了什么 ANCM是一个原生的IIS模块,它挂接到...对于开发机器而言,Visual Studio会自动为IIS Express和IIS(如果IIS已经被安装在开发机器中)安装ANCM。...这种机制有利于例如在MacOS上开发测试程序并部署到运行IIS的服务器的场景。当在Mac上运行时,Kestrel以web服务器的身份存在,但是当应用部署到IIS环境时,它会自动搭接ANCM和IIS。
默认值可以是: 项目 IISExpress IIS 此值与项目文件中的AspNetCoreHostingModel元素的值会有对应关系,会一起指定要启动的内部和外部Web服务器(反向代理服务器)。...只使用一个Web服务器 - Kestrel IISExpress 进程内托管(InProcess) 只使用一个Web服务器 - IIS Express 只使用一个Web服务器 - IIS Express...IISExpress 进程外托管(OutOfProcess) Kestrel IIS Express IIS 进程内托管(InProcess) 只使用一个Web服务器 - IIS 只使用一个Web服务器...- IIS IIS 进程外托管(OutOfProcess) Kestrel IIS 您还可以通过直接编辑launchSettings.json文件中的设置,也可以使用Visual Studio提供的图形用户界面...我们将在即将发布的视频中详细讨论环境变量和开发人员异常页面。
比如如果是部署在 IIS 下,那么 In Process 会比 Out Process 快;如果是 Self Host 那么使用 HttpSys 服务器会比 Kestrel 快。...InProcess 模式 InProcess 模式将 ASP.NET Core 应用程序直接部署在 IIS 中,与 IIS 工作进程相同的进程中运行。...这种模式通过进程间通信与 IIS 进行通信,理论上可能引入一些性能开销。 3....SelfHost Kestrel 模式 Kestrel 模式是 ASP.NET Core 的内置 Web 服务器,可以独立运行而无需依赖其他外部服务器。...Kestrel 是轻量级、跨平台的选择,专为处理大量并发连接而设计。
③IIS、Apache、Nginx: Kestrel 可以单独使用 ,也可以将其与反向代理服务器(如 IIS、Nginx 或 Apache)结合使用。 ...下面来介绍一下这些ConfigureXXX和UseXXX. A. UseKestrel 用于指定服务器使用 Kestrel, 若使用HttpSys, 需使用UseHttpSys。...ConfigureLogging 配置日志处理程序,控制台和调试日志提供程序, 学习日志的时候再详讲. E. UseIISIntegration 将应用程序配置为在 IIS 中运行。...上面已经讲过, 这里仍需要使用 UseKestrel, 而IIS 起到反向代理的作用,而 Kestrel 仍用作主机。...如果应用程序没有使用 IIS 作为反向代理,那么 UseIISIntegration 不会有任何效果。因此,即使应用程序在非 IIS 方案中运行,也可以安全调用这种方法。
领取专属 10元无门槛券
手把手带您无忧上云