Entwicklung & Code

Neu in .NET 10.0 [18]: Webserver als File-based App


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

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.

Weiterlesen nach der Anzeige




Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

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.

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(); // 

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
{
    /// 
    public string? Version { get; set; }
    /// 
    public string? Release { get; set; }
}




Start und Ausgabe des Webservers (Abb. 1)


(rme)



Source link

Beliebt

Die mobile Version verlassen