einfache Websites mit ASP.NET

Wir betreiben eine Reihe von Web Seiten für Marketing und Kommunikation. Sollen schön aussehen, SEO freundlich und leicht zu pflegen sein. Da all unsere Seiten irgendwie auch mit unserem Backend verknüpft sind, scheiden klassische Content Management Systeme aus. Dazu muss auch ein einfacher HTML Designer mal schnell ein Formular oder Gewinnspiel in Betrieb nehmen können. Bisher war unsere Lösung ASP.NET Webforms Pages. Dabei wird nicht eine große DLL kompiliert, sondern jede ASPX Seite einzeln bei Aufruf. Ein einfaches editieren per Notepad reicht schon aus und die Seite wird bei Aufruf neu kompiliert.

Leider leider hat Microsoft wohl den Support für VB.NET in ASP.NET eingestellt, so das auf C# ausgewichen werden muss. Als View Engine ist Razor die simpelste Methode. Also legen wir mit Visual Studio 2022 eine neue ASP.NET core Web App an.

Screenshot 2021-12-29 143020

Früher war hier noch eine Checkbox, mit der das Feature Runtime Compilation aktiviert wurde. Keine Ahnung warum Microsoft (wie so oft) dieses Feature einfach kommentarlos verschwinden lässt. Mit Runtime Compilation wird eine veränderte cshtml Datei automatisch neu kompiliert ohne das Projekt in eine große DLL kompilieren zu müssen. Per Nuget lässt sich das Paket dem Projekt hinzufügen

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

Fehlt nur noch eine minimale Änderung in der Datei nun Dank “minimal Api” programm.cs.

   1:  builder.Services.AddRazorPages().AddRazorRuntimeCompilation(); 

Wenn man nun das Projekt per Deploy verteilen will, wird nur die DLL und nicht die Razor cshtml Dateien im Zielverzeichnis sehen. Die braucht Web Designer aber um seine Änderungen am HTML Code vorzunehmen.
Dazu editieren sie die csproj Datei bzw. den XML Code und fügen die CompileOnPublish Option ein.

   1:  <PropertyGroup>
   2:   <TargetFramework>net6.0</TargetFramework>
   3:   <RazorCompileOnPublish>false</RazorCompileOnPublish>

Nun können wir den Publishing Assistent von Visual Studio einrichten. Am einfachsten nimmt man einen Datei Ordner auf der lokalen Festplatte als Ziel.

Screenshot 2021-12-29 195019

Nachdem Sie nun aus dem Visual Studio Projekt die Veröffentlichen Aufgabe erfolgreich gestartet haben, finden sich im Ziel Ordner eine exe Datei die man direkt starten kann. Die ASP.NET  Anwendung wird im Kestrel Web Server auf Port 5000 gehostet und kann im Browser per localhost:5000 genutzt werden.

Rein um die Sache zu testen, die index.cshtml Datei im Pages Ordner ändern, speichern und im Browser refresh. Man kann auch neue Razor  Dateien in der produktiven Website anlegen, solange der C# Code in der Page gehalten wird und die Datei im Pages Verzeichnis liegt.

   1:  @page
   2:  <h1> my page</h1>
   3:  <p>@Model.Message</p>
   4:  @{
   5:      @functions
   6:      {
   7:          public string Message { get; set; } 
   8:          public void OnGet()
   9:          {
  10:              Message = "onget";
  11:          }
  12:      }
  13:  }
Kommentare sind geschlossen