-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
49 lines (37 loc) · 1.44 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// CA1852 Type 'Program' can be sealed because it has no subtypes in its containing assembly and is not externally visible
// https://github.com/dotnet/roslyn-analyzers/issues/6141
#pragma warning disable CA1852
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using Sstv.DomainExceptions.Extensions.DependencyInjection;
using Sstv.Host;
using System.Text.Json;
using System.Text.Json.Serialization;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry()
.ConfigureResource(b => b.AddService(serviceName: "MyService"))
.WithMetrics(o =>
{
o.AddDomainExceptionInstrumentation();
o.AddAspNetCoreInstrumentation();
o.AddPrometheusExporter();
});
builder.Services.AddDomainException();
builder.Services.AddProblemDetail();
builder.Services
.AddControllers()
.AddValidationProblemDetails()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault;
});
var app = builder.Build();
app.UseExceptionHandler();
app.MapExampleEndpoints();
app.MapControllers();
app.MapPrometheusScrapingEndpoint();
app.UseErrorCodesDebugView();
app.Run();