![]() |
VOOZH | about |
dotnet add package Grad.CsLib --version 2.0.18
NuGet\Install-Package Grad.CsLib -Version 2.0.18
<PackageReference Include="Grad.CsLib" Version="2.0.18" />
<PackageVersion Include="Grad.CsLib" Version="2.0.18" />Directory.Packages.props
<PackageReference Include="Grad.CsLib" />Project file
paket add Grad.CsLib --version 2.0.18
#r "nuget: Grad.CsLib, 2.0.18"
#:package Grad.CsLib@2.0.18
#addin nuget:?package=Grad.CsLib&version=2.0.18Install as a Cake Addin
#tool nuget:?package=Grad.CsLib&version=2.0.18Install as a Cake Tool
This package contains utilities for C# API projects.
This package is very opinionated, as it's intended for Graduate College API projects:
/spec folder for generating client libraries.
For local development scenarios where involving Entra isn't desirable, CsLib also provides an opt-in combined
authentication mode that accepts a simple Api-Key header (see AddAuthAzureAdOrDevApiKey()).
Outside of Microsoft packages, these are the main dependencies:
CsLibWebHere's an example of how to set up a Program.cs file for a web API project:
using ExampleData;
using ExampleServer;
using FastEndpoints.ClientGen.Kiota;
using Grad.CsLib;
using Grad.CsLib.ClientErrorLogging;
using Microsoft.EntityFrameworkCore;
using Serilog;
var builder = WebApplication.CreateBuilder(args);
builder.AddSwagger(args, "ExampleServer", "0.0.1", "Example Backend Server");
builder
.AddSerilog()
.AddCors()
.AddAuth();
builder.Services
.AddDbContext<ExampleContext>(options =>
options.UseSqlServer(
builder.Configuration.GetConnectionString("Example")))
.AddAuthorization(AuthPolicy.AddAuthPolicy)
.RegisterServicesFromExampleServer();
builder.AddEndpoints(DiscoveredTypes.All);
try
{
var app = builder.BuildAndConfigureApp(b => b.ReflectionCache.AddFromExampleData().AddFromExampleServer());
// Optional: Add client-side error logging endpoint
app.MapClientErrorLogging("/api/client-errors");
// This is only run with the --exportswaggerjson option
await app.ExportSwaggerJsonAndExitAsync("ExampleServer", "../spec");
app.Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Application start-up failed");
}
finally
{
Log.CloseAndFlush();
}
If you want to allow a development-only API key as an alternative to Entra, replace AddAuth() with:
builder
.AddSerilog()
.AddCors()
.AddAuthAzureAdOrDevApiKey();
Configure the expected key in configuration (for example via appsettings.Development.json):
{
"CsLibWeb": {
"DevApiKey": "your-dev-key"
}
}
When the request includes the Api-Key header, API key authentication is used; otherwise CsLib falls back to
Entra bearer authentication.
CsLib provides a convenient endpoint for logging client-side errors. This allows frontend applications to send error information to the backend for centralized logging and analysis.
For detailed documentation, see .
Quick example:
// In Program.cs, after building the app
app.MapClientErrorLogging("/api/client-errors");
This creates an anonymous POST endpoint that accepts client errors with validation for error type, message, stack trace, and contextual data. All errors are logged to Serilog for collection by Splunk.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.