ASP.NET Core的Kestrel服务器
原文:
ASP.NET Core的Kestrel服务器
原文地址----Kestrel server for ASP.NET Core By Tom Dykstra,Chris Ross,and Stephen Halter Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器。 Kestrel支持以下功能:
Kestrel 被.NET Core支持的所有平台和版本所支持 查看或下载示例代码 何时使用Kestrel和反向代理服务器如果你的应用只接收来自内部网络的请求,你可以只使用Kestrel本身。 如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。一个反向代理服务器接收来自网络的HTTP请求并且在经过一些初步处理后将请求传递到Kestrel服务器。 出于安全性的理由,反向代理常常被edge deployments所采用。因为Kestrel相对较新,对抵御安全攻击至今还没有一个完整的功能补充。安全性处理包括但不限于适当的超时,大小的限制,以及并发连接限制等问题。 另一个需要反向代理的场景是,你有多个需要在单独的服务器上运行并分享同一端口的应用。因为Kestrel不支持在多进程间分享同一端口,所以应用并不能直接和Kestrel合作。当你在某个端口上配置Kestrel运行侦听时,不算主机头如何标识,Kestrel会为该端口处理所有的流量。反向代理可以为多个应用共享唯一端口并将流量发送给Kestrel。 即使不需要反向代理服务器,使用它也可以简化负载均衡和SSL设置 -- 只要你的反向代理服务器需要SSL证书,并且该服务器可以和你的应用在内部网中通过普通HTTP进行通信。 如何在ASP.NET Core应用中使用Kestrel安装 Microsoft.AspNetCore.Server.Kestrel Nuget包。 在应用的 public static int Main(string[] args) { Console.WriteLine("Running demo with Kestrel."); var config = new ConfigurationBuilder() .AddCommandLine(args) .Build(); var builder = new WebHostBuilder() .UseContentRoot(Directory.GetCurrentDirectory()) .UseConfiguration(config) .UseStartup<Startup>() .UseKestrel(options => { if (config["threadCount"] != null) { options.ThreadCount = int.Parse(config["threadCount"]); } }) .UseUrls("http://localhost:5000"); var host = builder.Build(); host.Run(); return 0; } URL 前缀默认情况下,ASP.NET Core项目绑定了 Kestrel URL前缀可以是以下格式中的任一种。
http://65.55.39.10:80/ https://65.55.39.10:443/
http://[0:0:0:0:0:ffff:4137:270a]:80/ https://[0:0:0:0:0:ffff:4137:270a]:443/ IPv6中的 [::] 等价于 IPv4 0.0.0.0。
http://contoso.com:80/ http://*:80/ https://contoso.com:443/ https://*:443/ 主机名称,*,以及+,都不是特殊的。任何没有公认的IP 或是“localhost”的地址将绑定到所有的IPv4和IPv6的IP上。如果你需要为不同的ASP.NET Core应用在同一端口上绑定不同的主机名,请使用WebListener或者诸如IIS,Nginx或Apache这样的反向代理服务器。 * "Localhost" 名称和端口号或回送IP地址和端口号 http://localhost:5000/ http://127.0.0.1:5000/ http://[::1]:5000/ 当
http://unix:/run/dan-live.sock 如果你指定了端口号0,Kestrel将动态地绑定到合适的端口号。除了 当你指定了端口号0,你可以使用 public void Configure(IApplicationBuilder app,ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); var serverAddressesFeature = app.ServerFeatures.Get<IServerAddressesFeature>(); app.UseStaticFiles(); app.Run(async (context) => { context.Response.ContentType = "text/html"; await context.Response .WriteAsync("<p>Hosted by Kestrel</p>"); if (serverAddressesFeature != null) { await context.Response .WriteAsync("<p>Listening on the following addresses: " + string.Join(",",serverAddressesFeature.Addresses) + "</p>"); } await context.Response.WriteAsync($"<p>Request URL: {context.Request.GetDisplayUrl()}<p>"); }); } SSL的URL前缀如果你调用 var host = new WebHostBuilder() .UseKestrel(options => { options.UseHttps("testCert.pfx","testPassword"); }) .UseUrls("http://localhost:5000","https://localhost:5001") .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup<Startup>() .Build();
下一步更多的信息,请参考以下资源:
本教程在本地仅使用Kestrel,在将该应用部署到Azure之后,它将在Windows上使用IIS作为反向代理服务器。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET GridView用法(二) 模板,脚注,排序,编辑,删除
- asp.net-mvc – Kendo UI Grid一次只扩展一行
- 数组 – 带有int数组参数的EF ExecuteSqlCommand
- asp.net-mvc-2 – 为什么mvc Html.HiddenFor不渲染我的字段
- iis – 诊断Classic ASP中的HTTP 500错误
- 在ASP.Net中访问HTML元素
- asp.net-mvc-3 – Request.Url何时可以为null?
- ASP.NET WEB API入门实例
- ASP.NET – 在postBack之后将屏幕滚动到之前的位置
- asp.net – 在成功登录时添加声明并在应用程序的其他位置检
- asp.net-core – .net core(csproj)global.json’
- webmatrix – 我看不到ASP.NET网页管理
- 在asp.net-mvc网站上,处理可编辑和只读视图是否有
- C# 快速高效率复制对象另一种方式 表达式树
- ASP.NET Forms身份验证的授权安全性
- asp.net – 如何在visual studio中查看cshtml页面
- vbscript – 服务器端注释:ASP Classic中相当于
- asp.net-mvc – 分页助手asp.net mvc
- asp.net-mvc – Asp.net Identity:User.Identit
- asp.net-mvc – 在使用ModelBinder之前更改文化