Azure: Attach debugger to App Service funktioniert nicht (Visual Studio 2019 V. 16.09.3)

Beim Versuch eine .NET 5 Webapplikation zu debuggen (Cloud Explorer -> App Service -> Attach Debugger) wurde mir immer folgende Meldung angezeigt:

Die Verbindung mit dem Remoteendpunkt wurde beendet.

Folgendes wurde überprüft:

  • Remotedebuggen ist aktiviert (App Service <Name> -> Konfiguration -> Allgemeine Einstellungen -> Debuggen)
  • Published wurde die “Debug” Konfiguration
  • Korrektes Target Framework eingestellt
  • App Service ist erreichbar

Ursache

Nach einer Weile recherchieren im Netz habe ich folgende Erkenntnis erlangt:

Visual Studio schickt eine Initialisierungsmeldung an den Remote Debugger. Im Inhalt sind unteranderem installierte Komponenten des VS. Es scheint, dass bei manchen VS Installationen diese Meldung die erwartete Grösse überschreitet, was dann zu einem sofortigen Abbruch führt. Gemäss Microsoft wurde dies bereits behoben im “App Service image Version 93” jedoch noch nicht weltweit verteilt. Was nun aber fortlaufen passieren soll. (24.02.2021)

Mit Hilfe von Kudu kann dies bei der Webapplikation überprüft werden. Cloud Explorer -> App Service <Name> -> Open in Kudu

Test halber habe ich einen neuen App Service-Plan mit Standort USA erstellt. Eine Testapplikation published und das Debuggen gestartet. Und es hat funktioniert. Der Azure App Service war in der Version:

Was ist nun die Lösung?

  1. Warten auf auf die “App Service image Version 93”
  2. Auf einen anderen Standort ausweichen, wenn möglich
  3. Als letzte Möglichkeit -> Als Workaround kann auch die Visual Studio Installation angepasst werden und nicht verwendete Komponenten deinstalliert werden (Habe ich selber nicht verifiziert)

Update (06.04.2021)

Das “App Service Image Version 93” ist jetzt auch an meinem verwendeten Standort angekommen und das Debuggen funktioniert wieder.

Nützliche Links

https://developercommunity.visualstudio.com/t/attach-debugger-to-azure-app-service-not-working/933126

.NET 6 Multi-platform App UI (MAUI)

Mit .NET 6 wird MAUI (Multi-platform App UI) xamarin.forms revolutionieren und die Entwicklung von “Cross-platform” Applikationen noch flexibler, produktiver und somit noch wirtschaftlicher ermöglichen.

Egal in welchem Umfeld werden bereits heute verschiedenste Plattformen (iOS, Android, Windows, Mac) eingesetzt, was zunehmend die Entwicklung von Applikationen erschwert. In vielen Betrieben wird auch das Thema BYOD (Bring Your Own Device) gefördert und sorgt dafür, dass die Plattform Vielfalt noch herausfordernder wird.

Das sind die Vorteile von .NET MAUI:

  • Free & open source
  • Cross-platform, native UI
  • Single project system, single codebase
  • Deploy to multiple devices, mobile & desktop
    • Native User Interfaces
    • Native API Access
    • Native Performance

Was heisst native UI?

Native UI heisst, egal welche Plattform ich als Benutzer verwende, ich erhalte immer die erwartete Oberfläche / Elemente (Datumspicker, Buttons, Navigation, Dark-Light Mode usw.) meiner verwendeten Plattform.

Video: The Future of Native Apps Development in .NET 6

Nützliche Links

Discord: DotNetEvolution

Xamarin

github: .NET MAUI

.NET 6.0 Preview Download

Windows: Remotecomputer herunterfahren oder neustarten

Dazu muss die “Command Console” / Eingabeaufforderung mit einem auf dem Remotecomputer berechtigten Benutzer ausgeführt werden.

Mit dem “Shutdown-Befehl” kann dann der Remotecomputer neu gestartet oder heruntergefahren werden:

>shutdown /r /m \\<remotecomputer> /t 0
/rneustarten
/mIP oder Name des Remotecomputer
/tZeit bis zum Neustart (0 = sofort ohne Verzögerung)

Nützliche Links

Windows: shutdown command

How to Restart or Shutdown a Remote Computer (activedirectorypro.com)

Raspberry Pi als VPN-Server mit WireGuard

Möchte man unterwegs auf seine privaten Daten im Heimnetzwerk zugreifen oder aber über eine verschlüsselte Verbindung im Internet recherchieren, weil man über einen öffentliches W-LAN verbunden ist, braucht man einen VPN-Server. Mit Hilfe eines VPN-Client wird dann eine sichere und verschlüsselte Verbindung in das eigene Heimnetzwerk hergestellt, egal wo man sich auf der Welt befindet.

Oft hat man die Möglichkeit, einen VPN-Server direkt auf dem eigenen Router zu aktivieren. Bietet der eigene Router, welcher durch den Provider zur Verfügung gestellt wird, keine Möglichkeit, einen VPN-Server zu betreiben, kann man mit einem Raspberry Pi und PiVPN ein einfacher, schneller und sicherer VPN-Server im Heimnetzwerk einrichten.

Welche Hardware braucht es dazu?

  • Einen Raspberry Pi 3 B+ oder 4
    • SD-Karte min. 8 GB
    • Netzteil
    • Gehäuse
  • Netzwerkkabel

Ist noch kein Raspberry Pi zu Hause vorhanden, findet man viele Anbieter, welche den Raspberry Pi in einem Bundle anbieten. Das heisst, alle benötigen Komponenten, werden mitgeliefert. Einfach eine Suche nach Raspberry Pi Bundle durchführen.

Welche Software braucht es dazu?

  • Raspberry Pi OS Lite
  • PiVPN mit WireGuard
  • WireGuard für Desktop oder Mobile

Installation

Die Installation führen wir mit folgenden Schritten durch:

  1. Raspberry Pi OS Lite installieren auf der SD-Karte (mit Raspberry Pi Imager)
  2. SSH aktivieren und Raspberry Pi starten
  3. Pi OS aktualisieren
  4. PiVPN installieren und WireGuard konfigurieren
  5. WireGuard Client-Konfiguration erstellen
  6. Portforwarding auf Router einrichten
  7. VPN-Client installieren und testen

Nützliche Links:

WireGuard Webseite

PiVPN Webseite

WinSCP

Raspberry Pi Webseite

Raspberry Pi Imager

Raspberry Pi – mit PiVPN WireGuard Clients verwalten

Neuer Client erstellen

Die Client-Konfiguration wird verwendet, um mit einem WireGuard-Client eine VPN-Verbindung herzustellen. Um einen neuen Client zu erstellen, wird folgender Befehl verwendet:

> pivpn add

Client löschen / entfernen

Wird ein Client gelöscht, ist es nicht mehr möglich, sich mit dem VPN-Client zu verbinden.

> pivpn remove

Alle Clients aufliesten

Auflistung aller vorhandenen Clients-Konfigurationen.

> pivpn list

Alle Clients mit Verbindungsstatus anzeigen

Auflistung aller aktiven Clients.

> pivpn clients

QR-Code einer Client-Konfiguration erstellen

Durch das erstellen des QR-Codes kann auf einfache Weise die Client-Konfiguration auf ein Mobilephone übertragen werden. Voraussetzung ist die installierte WireGuard App.

> pivpn -qr

Nützliche Links

WireGuard

Raspberry Pi als VPN-Server mit WireGuard

Raspberry Pi – PiVPN installieren und WireGuard konfigurieren

Mit dem Installations-Skript PiVPN können wir auf einfache Weise einen VPN-Server installieren und konfigurieren. Dazu wird folgender Befehl in der Raspberry Pi Konsole eingegeben:

Damit wird das Skript heruntergeladen und ausgeführt:

Wir klicken uns durch das Set-up-Menu und geben die benötigten Informationen an. Ist man sich unsicher, welche Auswahl getroffen werden soll, kann man ohne Probleme die Standardeinstellungen verwenden. Braucht man spezielle Einstellungen, wird man diese meistens kennen.

Als VPN wird WireGuard ausgewählt und mit “ok” bestätigt. Das Installaltions-Skript führt nun die benötigten Schritte aus und installiert die nötigten Komponenten.

Nun gibt es die Möglichkeit, den Standardport zu ändern oder dieser zu belassen.

Als Nächstes definieren wir den gewünschten DNS-Provider. Brauchen wir keine speziellen Einstellungen, kann das Quad9 DNS-Netzwerk genutzt werden.

Haben wir eine öffentliche fixe IP-Adresse, können wir “Use this public IP” auswählen. Ist keine vorhanden, müssen wir dies über eine Dynamische DNS Konfiguration lösen. Hilfe zur Konfiguration finden wir über eine Suchmaschine.

Als Nächstes können wir das automatische Installieren von Updates aktivieren. Damit dies auch korrekt funktioniert, muss jedoch der Raspberry Pi zwischendurch neu gestartet werden.

Nach diesem Schritt werden nun noch die “Server-Keys” generiert. Konnten die Server-Schlüssel generiert werden, ist es an der Zeit, den Raspberry Pi neu zu starten. Danach ist die Installation fertiggestellt.

Nützliche Links

Raspberry Pi als VPN-Server mit WireGuard

Raspberry Pi OS Lite installieren mit dem Raspberry Pi Imager

Raspberry Pi – SSH aktivieren

Raspberry Pi – Betriebsystem updaten / aktualisieren

Raspberry Pi – Betriebsystem updaten / aktualisieren

Um das Raspberry Pi OS zu aktualisieren, verbinden wir uns mit dem SSH-Client Putty:

Zuerst müssen die Paketinformationen aktualisiert werden:

> sudo apt-get update

Nun können die vorhandenen Updates installiert werden:

> sudo apt-get full-upgrade

Die Installation noch mit Y bestätigen.

Wurde die Installation vollständig durchgeführt, führen wir beide Befehle nochmals durch, um sicherzustellen, dass keine neuen Updates mehr vorhanden sind.

Die Aktualisierung ist somit abgeschlossen und das Raspberry Pi OS aktuell. Die Aktualisierung sollte regelmässig durchgefürt werden.

Nützliche Links

SSH aktivieren

Raspberry Pi aktualisieren

Raspberry Pi – SSH aktivieren

Auf einem neu installierten Raspberry Pi, ist aus Sicherheitsgründen der SSH-Zugriff standardmässig deaktiviert.

Die einfachste Möglichkeit, SSH auf dem Raspberry Pi zu aktivieren, funktioniert über die Datei ssh in der Boot-Partition.

Dies erledigt man am einfachsten direkt, nach dem man mit dem Raspberry Pi Imager, dass Image auf die SD-Karte installiert hat.

  1. Boot-Partition öffnen
  2. Neue leere Datei mit der Bezeichnung “ssh” erstellen (Wichtig: ohne Dateiendung)

Nach dem Einsetzen der SD-Karte in den Raspberry Pi funktioniert nun der Zugriff mit einem SSH-Client wie Putty.

Wichtig: Es sollte das Standardpasswort geändert werden, da ansonsten remote via ssh und dem standard Benutzername und Passwort auf den Raspberry Pi zugegriffen werden kann.

Warnmeldung nach dem Anmelden mit einem SSH-Client

Nützliche Links

raspberrypi.org: SSH (Secure Shell)

Raspberry Pi: SSH einschalten / aktivieren

Putty download

Raspberry Pi: Passwort ändern

Raspberry Pi OS Lite installieren mit dem Raspberry Pi Imager

Der Raspberry Pi Imager ist ein Hilfsprogramm zum Installieren des Pi OS oder andere Betriebssysteme für den Raspberry Pi auf einer SD-Karte. Hier ein paar Beispiele:

  • Raspberry Pi OS Desktop oder Lite
  • LibreELEC
  • Ubuntu (Desktop, Server, Core)
  • RetroPi
  • RecalBox
  • RISC OS Pi

Nach dem Herunterladen und des Installieren des Imager, kann die Applikation gestartet werden.

Raspberry Pi Imager

Als Nächstes wählen wir das Betriebssystem mit “CHOOSE OS”:

Unter Raspberry Pi OS (other) wählen wir das Raspberry Pi OS Lite (32-bit) Image:

Nun muss noch die SD-Karte ausgewählt werden, auf der das Image installiert werden soll. (CHOOSE SD CARD)

Damit das Image nun auf die SD-Karte geschrieben wird, klicken wir auf den Button “Write”. Achtung, alle Daten auf der SD-Karte werden nun endgültig gelöscht.

Nach dem Bestätigen mit “YES” wird das Image auf die SD-Karte geschrieben.

Wurde das Kopieren vollständig durchgeführt, kann die SD-Karte nun entfernt werden und im Raspberry Pi in Betrieb genommen werden.

Video zum Thema

raspberrypi.org: Using the Raspberry Pi Imager. Watch our 40-second video

Nützliche Links:

Raspberry Pi Imager

Logik IC’s Sammelsurium (74xx Serie)

Übersicht Logikfamilien

TypBeschreibungTechnologieV
74Standard 7400 SerieTTL4.75 – 5.25
74LLow-PowerTTL4.75 – 5.25
74LSLow-Power SchottkyTTL4.75 – 5.25
74ALSAdvanced Low-Power SchottkyTTL4.5 – 5.5
74CCMOS 4000-Serie KompatibleCMOS4 – 15
74HCHigh-Speed CMOSCMOS2 – 6
74HCTHigh-Speed CMOS TTL Levels (1) (2)CMOS
(TTL Kompatible)
4.75 – 5.25
74ACAdvanced CMOSCMOS2 -6
74ACTAdvanced CMOS TTL Levels (1)CMOS
(TTL Kompatible)
4.5 – 5.5
(1) Können als Ersatz für 74LS und 74ALS IC’s verwendet werden (2) Eingänge können mit den Ausgängen von 3.3 V Logik-Bausteine angesteuert werden

Techonologie

KürzelBeschreibung
TTLDie Transistor-Transistor-Logik (TTL) ist eine Schaltungstechnik (Logikfamilie) für logische Schaltungen (Gatter), bei der als aktives Bauelement der Schaltung planare npn-Bipolartransistoren verwendet werden. Wikipedia
CMOSComplementary metal-oxide-semiconductor (engl.; „komplementärer / sich ergänzender Metall-Oxid-Halbleiter“), Abk. CMOS, ist eine Bezeichnung für Halbleiterbauelemente, bei denen sowohl p-Kanal- als auch n-Kanal-MOSFETs auf einem gemeinsamen Substrat verwendet werden. Wikipedia

Namensgebung

SN74HC02N
Hersteller-PräfixTemperaturbereich-PräfixTypLogigfunktionPackung
Beispiel der Namensgebug für einen SN74HC02N (Quad 2-Input NOR Gate)

PräfixHersteller
AMAMD
HDHitachi
MCMotorola
PCPhilips
MSTMicroelectronics
DM, MM, FNational Semiconductor
USignetics
SNTexas Instruments
SPSPI
TCThosiba
Hersteller-Präfix

PräfixTemperaturbereichAnwendungszweck
740°C bis +70°Ckommerziel
84-40°C bis +85°Cindustriell
54-55°C bis +125°Cmilitärisch
Temperatur-Präfix

LogigfunktionBeschreibung
00Quad NAND Gate
02Quad NOR Gate
08Quad AND Gate
32Quad OR Gate
86Quad XOR Gate
04Hex Inverter
1324 NAND Schmitt Trigger Gatter mit je 2 Eingängen
1614-Bit Synchronous Binary Counter
1658-Bit Parallel -Load Shift Register (PISO)
5958-Bit Serial-Input/Serial or Parallel-Output Shift Register (SISO / SIPO)
Logigfunktion

PackungWärmewiderstand des IC-Gehäuses (1)
D73°C/W
DB82°C/W
N67°C/W
NS64°C/W
PW108°C/W
(1) Der Wärmewiderstand eines IC-Gehäuses (Package thermal impedance) ist das Mass für die Fähigkeit des Gehäuses, die vom IC (Chip) erzeugte Wärme auf die Leiterplatte oder die Umgebung zu übertragen.

Pinbelegungen

Pin xA & xB sind die Inputpins, Pin xY ist der dazugehörige Outputpin. Gültig für x400, x402, x408, x432, x486

Datasheets 74x

Interessante Videos

Interessantes Video zur Verwendung von “Digital Logic IC’s” von DroneBot Workshop
Interessantes Video zur Verwendung von “Shift Registers” von DroneBot Workshop
Deutsches Video zum Schieberegister 74xx595

Nützliche Links

Wikipedia: Logikfamilie

Wikipedia: 74xx

dieelektronikerseite.de: Elektronische Grundlagen – viele Beispiele in den Lehrgängen zum Thema Digitaltechnik

7400 series CMOS vs 4000 series logic IC

Wikipedia: 4000 Serie IC’s

Wikipedia: List of 4000-series integrated circuits

Porterweiterung mit SPI