Zzdats.Lgp.Common.Web 10.0.7

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Zzdats.Lgp.Common.Web --version 10.0.7
                    
NuGet\Install-Package Zzdats.Lgp.Common.Web -Version 10.0.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Zzdats.Lgp.Common.Web" Version="10.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zzdats.Lgp.Common.Web" Version="10.0.7" />
                    
Directory.Packages.props
<PackageReference Include="Zzdats.Lgp.Common.Web" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zzdats.Lgp.Common.Web --version 10.0.7
                    
#r "nuget: Zzdats.Lgp.Common.Web, 10.0.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Zzdats.Lgp.Common.Web@10.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Zzdats.Lgp.Common.Web&version=10.0.7
                    
Install as a Cake Addin
#tool nuget:?package=Zzdats.Lgp.Common.Web&version=10.0.7
                    
Install as a Cake Tool

Common-Web .NET10

Common-Web repozitorijs satur kopējās lietas web projektiem (API, MVC)

Šis repozitorijs ir kā daļa no LGP .Net Core projekta.

Pakas

Pakas nosaukums: Zzdats.Lgp.Common.Web

Izmantošana

Failā Startup.cs:

  • ConfigureServices pievienojam:
    services.AddLgpCore(Configuration.GetSection("Lgp"));
  • Configure pievienojam:
    app.UseLgpCore();

Failā Program.cs izmantojam:

using System.Threading.Tasks;

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace Zzdats.Audit.RestAPI
{
    /// <summary>
    /// Represents the current application.
    /// </summary>
    public static class Program
    {
        /// <summary>
        /// The main entry point to the application.
        /// </summary>
        /// <param name="args">The arguments provided at start-up, if any.</param>
        public static async Task Main(string[] args) => await CreateHostBuilder(args).Build().RunAsync();

        /// <summary>
        /// Create host builder.
        /// </summary>
        /// <param name="args">The arguments provided at start-up, if any.</param>
        /// <returns></returns>
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseLgpCore()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                        .UseLgpCore()
                        .UseStartup<Startup>();
                });
    }
}

Failā Program.cs izmantojam priekš net6:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Zzdats.DGC.Public.Service.Api;

await Host.CreateDefaultBuilder(args)
    .UseLgpCore()
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder
            .UseLgpCore()
            .UseStartup<Startup>();
    })
    .Build()
    .RunAsync();

Iespējas, kas tiek pievienotas pēc noklusējuma

  • Health check (/healthz ar CSSO un Authority serveru URL pārbaudi)
  • Prometheus metriku eksporta URL /metrics
  • Elastic APM (HttpDiagnosticsSubscriber un AspNetCoreDiagnosticSubscriber)
  • Log ierakstu veidošana ECS formātā

Pielāgošana

Papildus Elastic APM mērījumu pievienošana

  • ConfigureServices pievienojam:
    services.AddLgpCore(Configuration.GetSection("Lgp"), opt =>
    {
        opt.ElasticApmDiagnosticsSubscribers.Add(new ElasticsearchDiagnosticsSubscriber());
    });

Papildus Health check pievienošana

  • ConfigureServices pievienojam:
    services.AddHealthChecks()
        .AddUrlGroup(new Uri(customServiceUrl), name: "mycustomservice", failureStatus: HealthStatus.Degraded);

Konfigurācijas piemērs

{
    "Lgp": {
        "Log": {
            "File": "./logs/log.log",
            "Console": true,
            "ConsoleTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}",
            "ExcludePaths": "/healthz,/metrics"
        },
        "Infrastructure": {
            "Health": {
                "Enabled": true
            },
            "Metrics": {
                "Enabled": true,
                "Authorization": "Bearer <token>"
            }
        }
    },
}

Prometheus eksporteris

Lai ieslēgtu prometheus metrikas eksportēšanu /metrics URL, Lgp:Infrastructure:Metrics:Enabled jābūt true. Lai aizsargātu šo endpoint, Lgp:Infrastructure:Metrics:Authorization jānorādā kāds Authorization header tiks padods pieprasījumā no prometheus, pretējā gadījumā /metrics atbildēs ar 401 Unauthorized. Attiecīgi prometheus metriku ievācējam (scraper) jānorāda šis Authorization header.

Konfigurācijas piemērs:

{
    "Lgp": {
        "Infrastructure": {
            "Metrics": {
                "Enabled": true,
                "Authorization": "Bearer <token>"
            }
        }
    }
}

Autorizēta izsaukuma piemērs:

GET /metrics HTTP/1.1
Host: localhost:5000
Authorization: Bearer <token>

# HELP dotnet_gc_pause_ratio The percentage of time the process spent paused for garbage collection
# TYPE dotnet_gc_pause_ratio gauge
dotnet_gc_pause_ratio 0
# HELP dotnet_sockets_bytes_received_total The total number of bytes received over the network
# TYPE dotnet_sockets_bytes_received_total counter
dotnet_sockets_bytes_received_total 23384
# HELP process_working_set_bytes Process working set
# TYPE process_working_set_bytes gauge
process_working_set_bytes 149901312
# HELP dotnet_gc_heap_size_bytes The current size of all heaps (only updated after a garbage collection)
# TYPE dotnet_gc_heap_size_bytes gauge
dotnet_gc_heap_size_bytes{gc_generation="2"} 0
dotnet_gc_heap_size_bytes{gc_generation="loh"} 0
dotnet_gc_heap_size_bytes{gc_generation="0"} 0
dotnet_gc_heap_size_bytes{gc_generation="1"} 0
# HELP dotnet_jit_method_total Total number of methods compiled by the JIT compiler
# TYPE dotnet_jit_method_total counter
dotnet_jit_method_total 4573
# HELP aspnetcore_healthcheck_status ASP.NET Core health check status (0 == Unhealthy, 0.5 == Degraded, 1 == Healthy)
# TYPE aspnetcore_healthcheck_status gauge
aspnetcore_healthcheck_status{name="csso"} 1
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1713525913.5505784
# HELP dotnet_collection_count_total GC collection count
# TYPE dotnet_collection_count_total counter
dotnet_collection_count_total{generation="2"} 0
dotnet_collection_count_total{generation="0"} 0
dotnet_collection_count_total{generation="1"} 0
# HELP http_requests_received_total Provides the count of HTTP requests that have been processed by the ASP.NET Core pipeline.
# TYPE http_requests_received_total counter
http_requests_received_total{code="200",method="GET",controller="Account",action="GetExternalAuthorizations",endpoint="internal-api/account/external_authorization"} 1
http_requests_received_total{code="200",method="GET",controller="Account",action="GetCaptchaState",endpoint="internal-api/account/getcaptchastate"} 1
http_requests_received_total{code="200",method="POST",controller="Token",action="RefreshToken",endpoint="refresh_token"} 2
http_requests_received_total{code="200",method="GET",controller="WsFedAuthentication",action="Get",endpoint="authentication/external/icon/wsfederation"} 1
http_requests_received_total{code="101",method="GET",controller="",action="",endpoint=""} 1
http_requests_received_total{code="304",method="GET",controller="",action="",endpoint=""} 2
http_requests_received_total{code="200",method="GET",controller="Account",action="State",endpoint="internal-api/account"} 1
http_requests_received_total{code="200",method="GET",controller="",action="",endpoint=""} 1
# HELP process_cpu_count The number of processor cores available to this process.
# TYPE process_cpu_count gauge
process_cpu_count 12
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 0.96875
# HELP dotnet_gc_collection_count_total Counts the number of garbage collections that have occurred, broken down by generation number.
# TYPE dotnet_gc_collection_count_total counter
dotnet_gc_collection_count_total{gc_generation="2"} 0
dotnet_gc_collection_count_total{gc_generation="0"} 0
dotnet_gc_collection_count_total{gc_generation="1"} 0
# HELP dotnet_gc_memory_total_available_bytes The upper limit on the amount of physical memory .NET can allocate to
# TYPE dotnet_gc_memory_total_available_bytes gauge
dotnet_gc_memory_total_available_bytes 34029125632
# HELP dotnet_threadpool_timer_count The number of timers active
# TYPE dotnet_threadpool_timer_count gauge
dotnet_threadpool_timer_count 27
# HELP dotnet_sockets_bytes_sent_total The total number of bytes sent over the network
# TYPE dotnet_sockets_bytes_sent_total counter
dotnet_sockets_bytes_sent_total 66451
# HELP dotnet_contention_total The number of locks contended
# TYPE dotnet_contention_total counter
dotnet_contention_total 31
# HELP dotnet_sockets_connections_established_outgoing_total The total number of outgoing established TCP connections
# TYPE dotnet_sockets_connections_established_outgoing_total counter
dotnet_sockets_connections_established_outgoing_total 6
# HELP http_request_duration_seconds The duration of HTTP requests processed by an ASP.NET Core application.
# TYPE http_request_duration_seconds histogram
http_request_duration_seconds_sum{code="200",method="GET",controller="",action="",endpoint=""} 9.2418655
http_request_duration_seconds_count{code="200",method="GET",controller="",action="",endpoint=""} 1
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.001"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.002"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.004"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.008"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.016"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.032"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.064"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.128"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.256"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="0.512"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="1.024"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="2.048"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="4.096"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="8.192"} 0
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="16.384"} 1
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="32.768"} 1
http_request_duration_seconds_bucket{code="200",method="GET",controller="",action="",endpoint="",le="+Inf"} 1
# HELP dotnet_sockets_connections_established_incoming_total The total number of incoming established TCP connections
# TYPE dotnet_sockets_connections_established_incoming_total counter
dotnet_sockets_connections_established_incoming_total 6
# HELP dotnet_build_info Build information about prometheus-net.DotNetRuntime and the environment
# TYPE dotnet_build_info gauge
dotnet_build_info{version="4.4.0.0",target_framework=".NETCoreApp,Version=v6.0",runtime_version=".NET 6.0.28",os_version="Microsoft Windows 10.0.22631",process_architecture="X64",gc_mode="Server"} 1
# HELP dotnet_total_memory_bytes Total known allocated memory
# TYPE dotnet_total_memory_bytes gauge
dotnet_total_memory_bytes 52096400
# HELP dotnet_exceptions_total Count of exceptions thrown
# TYPE dotnet_exceptions_total counter
dotnet_exceptions_total 56
# HELP dotnet_gc_allocated_bytes_total The total number of bytes allocated on the managed heap
# TYPE dotnet_gc_allocated_bytes_total counter
dotnet_gc_allocated_bytes_total 12093424
# HELP dotnet_threadpool_queue_length Measures the queue length of the thread pool. Values greater than 0 indicate a backlog of work for the threadpool to process.
# TYPE dotnet_threadpool_queue_length histogram
dotnet_threadpool_queue_length_sum 1
dotnet_threadpool_queue_length_count 17
dotnet_threadpool_queue_length_bucket{le="0"} 16
dotnet_threadpool_queue_length_bucket{le="1"} 17
dotnet_threadpool_queue_length_bucket{le="10"} 17
dotnet_threadpool_queue_length_bucket{le="100"} 17
dotnet_threadpool_queue_length_bucket{le="1000"} 17
dotnet_threadpool_queue_length_bucket{le="+Inf"} 17
# HELP process_open_handles Number of open handles
# TYPE process_open_handles gauge
process_open_handles 1013
# HELP process_private_memory_bytes Process private memory size
# TYPE process_private_memory_bytes gauge
process_private_memory_bytes 146071552
# HELP dotnet_threadpool_throughput_total The total number of work items that have finished execution in the thread pool
# TYPE dotnet_threadpool_throughput_total counter
dotnet_threadpool_throughput_total 1116
# HELP process_num_threads Total number of threads
# TYPE process_num_threads gauge
process_num_threads 55
# HELP dotnet_jit_il_bytes Total bytes of IL compiled by the JIT compiler
# TYPE dotnet_jit_il_bytes gauge
dotnet_jit_il_bytes 585215
# HELP http_requests_in_progress The number of requests currently in progress in the ASP.NET Core pipeline. One series without controller/action label values counts all in-progress requests, with separate series existing for each controller-action pair.
# TYPE http_requests_in_progress gauge
http_requests_in_progress{method="POST",controller="",action="",endpoint=""} 0
http_requests_in_progress{method="GET",controller="",action="",endpoint=""} 4
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 2223227957248
# HELP dotnet_threadpool_num_threads The number of active threads in the thread pool
# TYPE dotnet_threadpool_num_threads gauge
dotnet_threadpool_num_threads 24

IDAuth adaptera autentifikācija

Šī bibliotēka satur arī autentifikācijas apstrādātāju.

Apstrādātājs noraida talonu, ja IDAuth sesija nav aktīva (active: false), un izlaiž JWT talonus (talonus, kas satur punktu), lai tos apstrādātu JWT shēma.

Lai izmantotu IDAuth autentifikācijas talonus:

  1. Jāpievieno konfigurācijā IDAuth URL ceļā Lgp:Infrastructure:IdAuth:Url vai ar vides mainīgo LGP__INFRASTRUCTURE__IDAUTH__URL
  2. Jāpievieno konfigurācija Startup.cs failā pie ConfigureServices
 services.AddAuthentication(opt =>
            {
                opt.DefaultScheme = IDAuthDefaults.AuthenticationScheme;
            })
         .AddScheme<IDAuthAuthenticationOptions, IDAuthAuthenticationHandler>("IDAuth", options =>
            {
                options.AuthUrl = Configuration.GetValue<string>("Lgp:Infrastructure:IdAuth:Url");
            });

Var izmantot arī vairākus autentifikācijas apstrādātājus, lai varētu izmantot IDauth talonu un ja tas neapstrādājas, tad caurskrist (fallback) uz JWT taloniem.

Piemērs:

services.AddAuthentication(opt =>
{
    opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(opt =>
{
    opt.Authority = Configuration.GetValue<string>("Lgp:Infrastructure:Authority:Url");
    opt.RequireHttpsMetadata = !Environment.IsDevelopment();
    opt.TokenValidationParameters = new TokenValidationParameters()
    {
        ValidateAudience = false,
    };
}).AddScheme<IDAuthAuthenticationOptions, IDAuthAuthenticationHandler>("IDAuth", options =>
        {
            options.AuthUrl = Configuration.GetValue<string>("Lgp:Infrastructure:IdAuth:Url");
        });

un tad kontroliera klasē var norādīt abus.

[ApiController]
[Authorize(AuthenticationSchemes =JwtBearerDefaults.AuthenticationScheme + "," + IDAuthDefaults.AuthenticationScheme)]
public class BusinessEventController : ApiControllerBase
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Zzdats.Lgp.Common.Web:

Package Downloads
Zzdats.Lgp.Common.Mvc

MVC LGP common components and infrastructure integration

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.9 87 9/14/2026
10.0.8 88 9/14/2026
10.0.7 149 8/25/2026
8.0.17 73 9/14/2026
8.0.16 76 9/14/2026
8.0.15 82 9/14/2026
8.0.14 103 8/25/2026