Beim Betrieb von SignalR mit ASP.NET Core Projekten in Azure gibt es einige Dinge zu beachten. Diese sind in diesem Artikel zusammengefasst.

In den letzten 2 Artikeln wurde beschrieben, wie die Vorabversion von SignalR in ASP.NET Core Projekten verwendet werden kann.

Wenn man sich für das Betreiben der Anwendung in einem Azure App Service entscheidet, gibt es ein paar wesentliche Dinge zu beachten:

WebSocket Unterstützung aktivieren

Da SignalR als bevorzugtes Protokoll WebSockets verwendet, müssen diese zunächst in Azure aktiviert werden. Hierzu geht man in die Konfiguration des App Service auf Anwendungseinstellungen und aktiviert dort die Websockets.

App Service Konfiguration App Service Konfiguration

WebSocket Limits in Azure

Die Anzahl der WebSocket-Verbindungen unterliegt in Azure, je nach Größe der Instanz, folgenden Einschränkungen:

  • Free: 5
  • Shared: 35
  • Basic: 350
  • Standard: Unbegrenzt
  • Premium: Unbegrenzt

SSL sollte aktiviert werden

Eine allgemeine Empfehlung ist es, SSL standardmäßig im App Service zu aktivieren, um mögliche Seiteneffekte bei der Verwendung von WebSockets zu vermeiden. SignalR erkennt dies automatisch und verwendet sicheres wss (WebSockets über SSL) bei der Kommunikation.

In der ASP.NET Core Anwendung kann hierfür SSL erzwungen und unsichere HTTP-Verbindungen auf HTTPS umgeleitet werden. Hierzu erweitert man die Datei Startup.cs um folgende Zeilen in den ConfigureServices und Configure Methoden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new RequireHttpsAttribute());
    });

    // ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // ...

    var options = new RewriteOptions()
       .AddRedirectToHttps();

    app.UseRewriter(options);

    // ...
}

Zusammenfassung

In diesem Artikel wurden einige Fallstricke beschrieben, die es beim Betrieb von SignalR in Azure geben kann. Sind WebSockets und SSL im App Service aktiviert und die Instanzgröße ist entsprechend des Nutzeraufkommens konfiguriert, so steht einem reibungsfreien Betrieb nichts mehr im Weg.

Weiterführende Links