Azure Remote Debugging - Culture Neutral DateTime

In einem sehr einfachen ASP.NET MVC5 Beispiel soll das remote Debugging von Azure Apps in Visual Studio 2015 vorgeführt werden. Die Demo-Applikation zeigt die aktuelle Zeit in Österreich. Da die örtliche Zeit-Zone des Azure Servers nicht der österreichischen Zeitzone entspricht, wird auch eine konfigurierbare Zeit-Komponente eingeführt.

Applikation

Die Applikation TellTime telltime.azurewebsites.net kann verwendet werden um die atkuelle österreichische Uhrzeit abzufragen. Neben einer kleinen Log-Ausgabe in der Fußzeile wird auch eine externe Uhr von www.timeanddate.com eingebunden, um das Aussehen der Applikation aufzuwerten.

 

Sowohl externe Uhr (in der URL der Ressource), als auch die Applikation selbst zeigen immer die Zeit der österreichischen Region an, unabhängig der Server-Lokalität.

Azure Hosting / Remote Debugging

Die ASP.NET MVC 5 Applikation wurde lokal entwickelt und per Publish auf Azure gehostet. Dafür wird natürlich ein gültiger Azure-Zugang benötigt. (Microsoft bietet einen 30-Tage gültigen gratis Account mit 180€ Guthaben an. Bei der Anmeldung wird eine gültige Kreditkarte und Telefonnummer benötigt. [Stand 28.11.2016]) Die Applikation selbst wird im gratis Tier von Azure ghostet.

Publish
Per Rechts-Klick auf das Web-Projekt > Publish kann die Applikation nach Azure exportiert werden.
Als Ziel wird "Microsoft Azure App Service" ausgewählt. In dem Popup kann die Bezahl-Basis und die Ressourcen-Gruppe ausgewählt werden.
Für eine einfache Verwaltung der Applikation ist es empfehlenswert eine Ressourcen-Gruppe zu definieren. Besonders wenn viele Ressourcen zu der Applikation allokiert werden.

Die Verbindungs-Attribute werden von Visual-Studio vorbelegt. Die Konfiguration der Applkation muss aber auf DEBUG geändert werden.

 

Die Verbindungs-Attribute werden von Visual-Studio vorbelegt. Die Konfiguration der Applkation muss aber auf DEBUG geändert werden.

 

Konfiguration

Bevor wird uns per Debugger auf unsere Instanz verbinden können muss für den Azure App-Service Remote-Debugging aktiviert werden.

 

 

 

Visual Studio

In der Ansicht "Server Explorer" kann der eigene Azure-Zugang hinzugefügt werden. Es werden dadurch bereits alle verfügbaren Applikationen aufgelistet.

Die ASP.NET Web-Applikation ist unter der Gruppe "App Service" zu finden.

Per Attach Debugger (zu finden im Kontext-Menü unserer Web-Applikation Instanz) können wir uns bereits remote auf unsere Applikation verbinden. [1]

 

 

 

Zeitzonene-neutrale Zeitausgabe

Für den App Service Plan der TellTime Applikation wurde West Europa als Positition ausgewählt. Diese Server befinden sich laut Tests in der UTC+0 Zeitzone. DateTime.Now würde somit für die Fußzeile den falschen Wert als österreichische Ortszeit liefern.

Mit einer System.TimeZoneInfo Konfiguration und der Methode System.TimeZoneInfo.ConvertTime kann aber eine UTC DateTime Instanz korrekt umgerechnet werden. Die möglichen Zeitzonen sind in einer Windows-Registry definiert und können mit TimeZoneInfo.GetSystemTimeZones() ausgelesen werden. [2]

"Central Europe Standard Time" ist die richtige Zeitzone für Österreich (hier muss aber die Sommerzeit/Winterzeit noch berücksichtigt werden).

public struct DateTimeWithZone

{

    private readonly DateTime utcDateTime;

    private readonly TimeZoneInfo timeZone;

 

    public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone)

    {

        utcDateTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified), timeZone);

        this.timeZone = timeZone;

    }

 

    public DateTime UniversalTime { get { return utcDateTime; } }

 

    public TimeZoneInfo TimeZone { get { return timeZone; } }

 

    public DateTime LocalTime

    {

        get

        {

               

            DateTime value= TimeZoneInfo.ConvertTime(utcDateTime, timeZone);

            if (timeZone.SupportsDaylightSavingTime && !timeZone.IsDaylightSavingTime(value))

                value = value.AddHours(1);

            return value;

        }

    }

}

 

[3]

Zusammenfassung

Durch die Schritte in diesem Tutorial können eventuelle Probleme in Azure-Applikation leicht überprüft und somit hoffentlich schnell behoben werden. Mit der DateTimeWithZone-Komponente die Zeit in unterschiedlichen Regionen ermittelt werden. Wenn die Verwendung der UTC-Zeit nicht die Anforderung erfüllt.

BSc. Florian Bachinger
Erstellt: 2016-11-29
von: BSc.  Florian Bachinger
Stichworte: 

Azure Remote Debuggin Culture Neutral TimeStamp