Neu in .NET 10.0 [18]: Webserver als File-based App
In einer File-based App kann man den Kestrel-Webserver auf Basis von ASP.NET Core starten.
(Bild: Pincasso / Shutterstock.com)
- Dr. Holger Schwichtenberg
Das direkte Übersetzen und Starten von C#-Dateien nennt Microsoft File-based Apps. Es ist auch möglich, einen Kestrel-Webserver innerhalb einer solchen App zu starten. Unten stehendes Beispiel zeigt eine ASP.NET Core Minimal WebAPI als eigenständige C#-Datei. Das Hosting erfolgt in dem in ASP.NET Core mitgelieferten Webserver Kestrel.
In der File-based App wird Microsoft.NET.Sdk.Web als SDK angegeben. Als NuGet-Pakete werden Microsoft.AspNetCore.OpenApi und Humanizer verwendet. Die Ahead-of-Time-Kompilierung, die in File-based Apps Standard ist, ist hier deaktiviert, um Warnungen des JSON-Serialisierers zu vermeiden.
Videos by heise
Folgender Code zeigt den Webserver auf Basis von ASP.NET Core mit einem Minimal-WebAPI-Endpunkt und OpenAPI-Metadaten:
#:sdk Microsoft.NET.Sdk.Web
#:package Microsoft.AspNetCore.OpenApi@10.*-*
#:package Humanizer@2.14.1
#:property Version=1.1.4
#:property PublishAot=false
using Humanizer;
using Microsoft.OpenApi;
// Webserver einrichten
var builder = WebApplication.CreateBuilder();
builder.Services.AddOpenApi();
var app = builder.Build();
app.MapOpenApi(); // http://localhost:5000/openapi/v1.json
app.MapGet("/", () =>
{
// Daten fĂĽr Operation
var d = new Data
{
Version = "9.0",
Release = "2024-11-12"
};
var dotNet9Released = DateTimeOffset.Parse(d.Release);
var since = DateTimeOffset.Now - dotNet9Released;
return $"It has been {since.Humanize()} since .NET {d.Version} was released.";
});
app.MapGet("/data", () =>
{
var d = new Data
{
Version = "9.0",
Release = "2024-11-12"
};
return Results.Json(d);
});
app.Run();
class Data
{
/// <summary>
/// Version of the .NET release.
/// </summary>
public string? Version { get; set; }
/// <summary>
/// Release date of the .NET version.
/// </summary>
public string? Release { get; set; }
}
(rme)