Kon*_*262 2 .net c# .net-core .net-6.0
我想向我的 .net 6 工作项目添加一些运行状况检查,但我不知道如何添加。
这是我想从旧样式Startup.cs类中添加的代码
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/hc", new HealthCheckOptions()
{
Predicate = _ => true,
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
endpoints.MapHealthChecks("/liveness", new HealthCheckOptions
{
Predicate = r => r.Name.Contains("self")
});
});
}
Run Code Online (Sandbox Code Playgroud)
在 .net 6 Web 应用程序中,您看起来会做这样的事情......
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/hc", new HealthCheckOptions()
{
Predicate = _ => true,
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
endpoints.MapHealthChecks("/liveness", new HealthCheckOptions
{
Predicate = r => r.Name.Contains("self")
});
});
app.Run();
Run Code Online (Sandbox Code Playgroud)
但是WebApplication.CreateBuilder(args)在工作模板中不可用。相反,你会得到这个...
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services => { services.AddHostedService<Worker>(); })
.Build();
await host.RunAsync();
Run Code Online (Sandbox Code Playgroud)
看起来应该是可能的,因为这里的eShopOnContainers参考应用程序中有多种方法的合并
要设置上下文,如果要公开/hc端点,则需要能够侦听(并回复)/hc路径上的 HTTP 请求的东西。换句话说,我们需要向工作线程添加一个 HTTP 侦听器(.NET 术语中的 Web 主机)。
那么,让我们这样做吧。
首先,我们需要配置我们的 SDK 项目以使用 Web SDK。将您的项目类型更改为:
<Project Sdk="Microsoft.NET.Sdk.Worker">
Run Code Online (Sandbox Code Playgroud)
到:
<Project Sdk="Microsoft.NET.Sdk.Web">
Run Code Online (Sandbox Code Playgroud)
接下来,我们可以使用以下命令来代替主机WebApplication:
var builder = WebApplication.CreateBuilder(args);
Run Code Online (Sandbox Code Playgroud)
然后,我们可以添加我们想要的两个服务(HealthCheck + Worker):
builder.Services.AddHealthChecks();
builder.Services.AddHostedService<Worker>();
Run Code Online (Sandbox Code Playgroud)
然后我们可以映射端点:
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/hc");
});
Run Code Online (Sandbox Code Playgroud)
最后运行应用程序:
app.Run();
Run Code Online (Sandbox Code Playgroud)
我发现https://learn.microsoft.com/en-us/aspnet/core/migration/50-to-60-samples?view=aspnetcore-6.0是一个很好的资源,可以了解如何将一些 3.1 样式的代码转换为 6.0样式代码。
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |