优质的网站建设案例,快捷的网站建设软件,网站建设备案查询,阿里云做网站要几天WebApplication 类
ASP.NET Core 有3个 Host 类#xff0c;是ASP.NET Core中用于初始化#xff0c;生命周期管理#xff0c;启动Web 服务的最重要的类。所以详细重点分析一下这几个类#xff0c;分别是#xff1a;
WebApplication#xff0c;ASP.NET Core 6 引入的替代…WebApplication 类
ASP.NET Core 有3个 Host 类是ASP.NET Core中用于初始化生命周期管理启动Web 服务的最重要的类。所以详细重点分析一下这几个类分别是
WebApplicationASP.NET Core 6 引入的替代WebHost的类可以用于 Web App或者 Web APIHost非 Web App或者Web API 使用的 Host 类比如纯控制台或者 Windows Service。WebHostASP.NET Core 6之前的版本使用的Host类。此处不再学习。
2个静态方法
CreateBuilder()用于创建WebApplicationBuilder 对象再用 Build 模式添加一些中间件再创建WebApplication对象。Create()用于直接创建一个WebApplication对象会默认添加和配置一些中间件。
使用CreateBuilder的例子代码
var builder WebApplication.CreateBuilder(args);
var app builder.Build();
app.MapGet(/, () Hello World!);
app.Run();直接创建一个WebApplication对象的例子代码
var app WebApplication.Create(args);
app.MapGet(/, () Hello World!);
app.Run();然后再用 Run()方法启动Web服务。包括 Run()共有3个方法启动Web服务区别是
Run()阻塞当前线程直到 Host 关闭。RunAsync()启动 Host 的 Task只有当 token 或者 shutdown 被触发时才会完成此。StartAsync()启动 Host的 Task启动成功后立即返回 Task然后 HTTP Server 可以接收 HTTP Request 。
其他的扩展方法
UseRequestLocalization()使用 RequestLocalizationMiddleware 中间件根据客户端的 http 请求自动设置语言。UseAuthentication()使用 AuthenticationMiddleware 中间件开启身份验证功能。UseAuthorization()使用 AuthorizationMiddleware 中间件开启权限验证功能必须用于app.UseRouting() 与 app.UseEndpoints(…)之间。UseCertificateForwarding()验证来自客户端请求的 Header 中的证书然后更新在HttpContext.Connection.ClientCertificate中。UseConcurrencyLimiter()使用ConcurrencyLimiterMiddleware 中间件限制并发请求数。MapConnectionHandler()将特定路径的请求映射到某个 pipeline。MapConnections()同上。MapAreaControllerRoute()为controller映射endpoints并指定路由。MapControllers()为controllerr映射endpoints但不指定路由。MapDefaultControllerRoute()为controllerr映射endpoints并使用默认路由{controllerHome}/{actionIndex}/{id?}。MapDynamicControllerRoute()为controllerr映射特定的 Route endpointsMapFallbackToAreaController()为controllerr映射特定的 Route endpointsUseCookiePolicy()使用CookiePolicyMiddleware 中间件开启 Cookie策略功能。UseCors()使用CORS中间件开启跨域功能。UseDefaultFiles()开启默认的文件映射功能。UseDeveloperExceptionPage()在开发环境下生成 exception 的 htmld页面。UseDirectoryBrowser()开启目录浏览功能。UseFileServer()使用静态文件中间件映射request 路径到我们预设的其他路径但不包含DirectoryBrowser功能。UseStaticFiles()使用静态文件中间件。Map()模式匹配 HTTP 请求映射到某个endpoint。MapHub()模式匹配 HTTP 请求映射到某个Hub。MapDelete()模式匹配 HTTP Delete请求映射到某个endpoint。MapGet()模式匹配 HTTP Get请求映射到某个endpoint。MapPut()模式匹配 HTTP Put请求映射到某个endpoint。MapPost()模式匹配 HTTP Post请求映射到某个endpoint。MapGroup()模式匹配 某个前缀的HTTP 请求映射到某个endpoint。MapMethods()模式匹配 某个方法的HTTP 请求映射到某个endpoint。MapPatch()模式匹配 HTTP Patch 请求映射到某个endpoint。MapHealthChecks()使用某个endpoint提供的HealthChecks功能。UseEndpoints()使用Endpoints中间件指定endpoints。UseRouting()使用路由中间件。UseExceptionHandler()捕获异常记录如果还没有执行 response则再用预设的另一个 pipeline 执行一次UseForwardedHeaders()HTTP代理转发client request 的 header填充HttpContext。UseHeaderPropagation()收集header发给 HttpClient。UseHealthChecks()使用健康度检查中间件。UseHostFiltering()过滤 http 请求无效请求返回400。UseHsts()使用HSTS添加Strict-Transport-Security header。UseHttpLogging()记录 http的 request 和 response。UseW3CLogging()以 W3C 格式记录 http的 request 和 response。UseHttpMethodOverride()当限制 client 的 GET或 POST 请求时可执行其他请求。UseHttpsRedirection()将 http 请求重定向至 https。UseMigrationsEndPoint()侦听DefaultPath的请求然后执行migrations操作。UseMvc()使用MVC中间件。UseOutputCache()caching HTTP response。UseResponseCaching()aching HTTP response。UseOwin()使用Owin。UseRateLimiter()限制requests流量。UseRequestDecompression() 解压缩 HTTP request功能。UseResponseCompression() 解压缩 HTTP response功能。UseRewriter()重写某个 url修改HttpContext。UseRouter()UseSession()启用 Session功能。UseSpa()返回SPA的默认页面。UseSpaStaticFiles()在 SPA 中使用静态文件。UseStatusCodePages()当没有 body 时返回400 and 599。UseMiddleware()使用自定义中间件。UsePathBase()提取路径UseWebSockets()使用WebSockets。UseWelcomePage()使用WelcomePage。
6个关键属性
ConfigurationEnvironmentLifetimeLoggerServicesUrls
Configuration
读取 Configuration
var app WebApplication.Create(args);
var message app.Configuration[HelloKey] ?? Config failed!;
app.MapGet(/, () message);
app.Run();Environment
Lifetime
Logger
var app WebApplication.Create(args);
app.Logger.LogInformation(The app started);
app.MapGet(/, () Hello World);
app.Run();Services
Resolve Service
using (var scope app.Services.CreateScope())
{var sampleService scope.ServiceProvider.GetRequiredServiceSampleService();sampleService.DoSomething();
}Urls
配置默认EndPoint
Visual Studio生成的模板代码会在 Properties/launchSettings.json 文件中将默认EndPoint设置成 http://localhost:5000。
修改监听端口
设置证书
WebApplicationBuilder 类
WebApplicationBuilder 类使用 Build 模式构建WebApplication对象。 设置完WebApplication要用的配置后调用 Build()方法生成 WebApplication 对象。
6个主要属性
ServicesEnvironmentConfigurationLoggingHostWebHost
Services
注册使用Service
var builder WebApplication.CreateBuilder(args);
// Add the memory cache services.
builder.Services.AddMemoryCache();
// Add a custom scoped service.
builder.Services.AddScopedITodoRepository, TodoRepository();
var app builder.Build();Environment
修改环境变量
var builder WebApplication.CreateBuilder(args);
// Configure JSON logging to the console.
builder.Environment.WebRootPath webroot;
var app builder.Build();
app.MapGet(/, () Hello JSON console!);
app.Run();Configuration
获取或者修改配置项
var builder WebApplication.CreateBuilder(args);
builder.Configuration.AddIniFile(appsettings.ini);
var app builder.Build();Logging
添加日志 provider
var builder WebApplication.CreateBuilder(args);
// Configure JSON logging to the console.
builder.Logging.AddJsonConsole();
var app builder.Build();
app.MapGet(/, () Hello JSON console!);
app.Run();Host
自定义 Host的属性
var builder WebApplication.CreateBuilder(args);
// Wait 30 seconds for graceful shutdown.
builder.Host.ConfigureHostOptions(o o.ShutdownTimeout TimeSpan.FromSeconds(30));
var app builder.Build();
app.MapGet(/, () Hello World!);
app.Run();WebHost
自定义 WebHost 的属性
var builder WebApplication.CreateBuilder(args);
// Change the HTTP server implemenation to be HTTP.sys based
builder.WebHost.UseHttpSys();
var app builder.Build();
app.MapGet(/, () Hello HTTP.sys);
app.Run();