Beiträge zum Thema „.NET“

92 Beitrag/Beiträge

Runtime-native async in .NET 11

Freitag, 31. Juli 2026

Wenn eine Aufgabe irgendwo in einer Kette von await-Aufrufen festhängt und ich in den Debugger schaue, sehe ich seit Jahren dasselbe: nicht meine Methoden, sondern MoveNext und AsyncMethodBuilderCore.Start in dreizehnfacher Ausführung. Man lernt, das zu überlesen. Schön ist es nicht.

Weiterlesen...

MCP-Server-Vorlage in .NET 11

Donnerstag, 30. Juli 2026

Bisher fing ein MCP-Server in .NET so an: erst dotnet new install Microsoft.McpServer.ProjectTemplates, dann ein passendes SDK, dann dotnet new mcpserver. Seit .NET 11 fällt der erste Schritt weg, die Vorlage liegt im SDK. Ein dotnet new mcpserver -o MeinServer erzeugt eine Program.cs mit der Transportwahl (stdio oder http), eine Beispielklasse mit einer [McpServerTool]-Methode und eine server.json fürs Veröffentlichen auf NuGet. Native AOT und self-contained lassen sich beim Anlegen gleich mitwählen.

Weiterlesen...

DefaultAzureCredential lokal statt Verbindungszeichenfolgen

Mittwoch, 29. Juli 2026

Eine Verbindungszeichenfolge mit Kontoschlüssel im Klartext ist die bequemste und die unangenehmste Art, lokal an einen Azure-Dienst zu kommen. Bequem, weil sie sofort funktioniert. Unangenehm, weil sie irgendwann in einer appsettings-Datei landet, dann versehentlich im Repository, und weil ihr nie ansieht, wer sie schon einmal kopiert hat. Zugangsdaten aus dem Repository herauszuhalten hatte ich schon einmal mit User Secrets beschrieben. Der Schlüssel selbst bleibt dabei aber ein Schlüssel. Angenehmer ist, lokal gar keinen zu haben.

Weiterlesen...

Collection-Expression-Argumente in C# 15

Dienstag, 28. Juli 2026

Seit Collection Expressions schreibe ich Listen und Sets fast nur noch mit eckigen Klammern. Eine Ecke blieb aber hartnaeckig: Sobald ein HashSet<string> gross- und kleinschreibungsunabhaengig vergleichen sollte oder ein Dictionary einen bestimmten StringComparer brauchte, half die kurze Form nicht. Der Comparer wandert in den Konstruktor, und einen Konstruktoraufruf kennt die eckige Klammer nicht. Also zurueck zu new und Objektinitialisierer, und der schoene Spread war weg.

Weiterlesen...

Resilienz-Pipelines mit Microsoft.Extensions.Resilience

Montag, 27. Juli 2026

Ein interner Dienst antwortete bei uns sporadisch mit 503, meist unter Last, meist nach wenigen Sekunden wieder weg. Der klassische Reflex ist eine Retry-Schleife von Hand, ein bisschen Task.Delay, ein Zaehler. Das funktioniert, bis jemand fragt, warum bei einem Timeout nicht auch abgebrochen wird, und warum der kaputte Dienst weiter mit Anfragen bombardiert wird, obwohl klar ist, dass er gerade nichts liefert. Genau diese Kombination nimmt einem Microsoft.Extensions.Resilience ab, aufgesetzt auf Polly.

Weiterlesen...

LINQ Full Outer Join in .NET 11

Montag, 27. Juli 2026

Zwei Listen, die sich nur in der Mitte überschneiden: Kunden mit Bestellungen, Bestellungen ohne Kunden, Kunden ohne Bestellung. Ich will alle drei Gruppen in einem Durchgang. In SQL ist das ein FULL OUTER JOIN, in LINQ gab es dafür lange nichts Eingebautes, nur die Krücke aus GroupJoin und DefaultIfEmpty.

Weiterlesen...

Fluent-Theming in WPF unter .NET 10

Samstag, 25. Juli 2026

Eine interne WPF-Anwendung, die ich pflege, sah neben allem anderen auf einem Windows-11-Rechner aus wie von 2010. Graue Rahmen, harte Kanten, die alten Aero2-Formen. Bisher hätte das ein eigenes Ressourcenwörterbuch oder eine fremde Bibliothek bedeutet. Seit .NET 9 liegt ein Fluent-Design im Framework selbst, und unter .NET 10 deckt es genug Steuerelemente ab, dass ich es an einem Nachmittag eingeschaltet habe.

Weiterlesen...

Automatischer CSRF-Schutz in ASP.NET Core

Freitag, 24. Juli 2026

Ich hatte einen Minimal-API-Endpunkt, der ein Formular per [FromForm] einliest, und bekam beim Absenden ohne mein Zutun ein 400 zurück. Die Ursache: ASP.NET Core validiert bei Formularbindung automatisch das Antiforgery-Token. Die Middleware landet schon in der Pipeline, sobald etwas wie AddRazorComponents oder MapControllerRoute sie einzieht, UseAntiforgery ruft man nicht mehr selbst auf. Geprüft wird nur bei POST, PUT und PATCH und nur, wenn der Endpunkt Formulardaten bindet. Reine JSON-Endpunkte bleiben außen vor, was für Cookie-lose APIs auch richtig ist.

Weiterlesen...

Asynchrone Validierung in ASP.NET Core

Donnerstag, 23. Juli 2026

Die haeufigste Validierung, die ich brauche und die am schlechtesten unterzubringen war, ist die Eindeutigkeitspruefung: Ist diese E-Mail schon vergeben? Das laesst sich nicht am Wert allein entscheiden, es braucht einen Blick in die Datenbank. Und genau da hoerte die eingebaute Validierung immer auf.

Weiterlesen...

Migrationen in EF Core zurückrollen

Dienstag, 21. Juli 2026

Nach dotnet ef database update landet man meistens bei der neuesten Migration. Weniger bekannt: derselbe Befehl nimmt auch den Namen einer älteren Migration entgegen und rollt bis dahin zurück, dotnet ef database update AddCustomerTable etwa. EF Core führt dazu für jede dazwischenliegende Migration die Down()-Methode rückwärts aus. Für die komplette Rückkehr zum leeren Schema gibt es die Kurzform dotnet ef database update 0.

Weiterlesen...

« Zurück zur Startseite