Wie bekommt man bei IONOS Blazor Server Apps zum Laufen?

Dr.-Ing. Christoph Truöl

Juli 2024

Bucht man das kleinste Paket, dann ist man in der Funktionalität beim Debuggen ziemlich eingeschränkt. Hilfe-Texte bei IONOS gibt es zwar, aber eine einfache Einführung in die Thematik findet man nicht. Also: Das Wichtigste beim IIS wird über die web.config gesteuert. Nennt man sie um, hat man die Chance, Dateien zu löschen und einzuspielen. Gibt man ihr den richtigen Namen zurück, läuft der IIS wieder an. Mit der Domain bekommt man ein kostenloses SSL-Zertifikat. Neue Subdomains werden gleich mit dem Zertifikat versorgt. Das Zertifikat spielt in der Folge noch eine Rolle. Erstellt man eine Blazor Server App im Visual Studio, dann geht alles ziemlich reibungslos, wenn man nur eine App betreiben will. Das Prozessmodell in der web.config wird über die Projektdatei (*.csproj) definiert und ist standardmäßig auf "inprocess" gestellt. Veröffentlicht man die App, läuft sie auch auf dem Server.
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>
Will man nun auf andere Dienste zugreifen, muss man über den Proxy von IONOS arbeiten. Die direkte Methode funktioniert auf Anhieb.
private static HttpClient? CreateClient(string? proxy = null, bool bypasslocal = false)
{
	if (!string.IsNullOrEmpty(proxy))
	{
		HttpClientHandler handler = new HttpClientHandler();
		handler.Proxy = new WebProxy(proxy, bypasslocal);
		handler.UseProxy = true;
		return new HttpClient(handler);
	}
	else
		return null;
}
Will man mehrere Apps unter verschiedenen Subdomains hosten, fangen die Probleme an. Die Apps verteilt man auf verschiedene Unterverzeichnisse und weist diesen dann die Domains zu. Ändert man am Prozessmodell nichts, so läuft mal die eine, mal die andere App. Im Visual Studio ändert man die Einstellung auf "OutOfProcess" für alle Apps, dann sollten sie parallel laufen. Das tun sie aber nicht, wenn man mit HTTPS arbeitet und die Apps entsprechend vorbereitet hat. Man erhält dann die Meldung, dass zu viele Redirects erfolgen. Abhilfe schafft es, die Zeile aus Program.cs zu entfernen.
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>
Ein letztes kleines Problem bleiben die Outbound Calls. Die Kommunikation über den Proxy läuft nicht. Hier muss im Gegensatz zu "inprocess" dem Proxy noch mitgeteilt werden, dass die "DefaultCredentials" genutzt werden sollen.
private static HttpClient? CreateClient(string? proxy = null, bool bypasslocal = false)
{
	if (!string.IsNullOrEmpty(proxy))
	{
		HttpClientHandler handler = new HttpClientHandler();
		handler.Proxy = new WebProxy(proxy, bypasslocal);
		handler.UseProxy = true;
		handler.UseDefaultCredentials = true;
		return new HttpClient(handler);
	}
	else
		return null;
}
Single AppMore then one app Usage
InProcess OutOfProcess *.csproj
- UseDefaultCredentials = true WebProxy
app.UseHttpsRedirection(); //app.UseHttpsRedirection(); Program.cs

IONOS Links

Script Examples for Establishing External HTTP Connections

Using .NET (ASP.NET Core) with Windows Hosting Packages

Parallelbetrieb mehrerer ASP.NET Core-Anwendungen auf einem Hosting-Paket

Automatically Redirect Visitors to SSL-Secured Site