Detecting your installed .net core version by console

If want to check which .net core version, sdk’s and runtimes are installed on your machine you can easily check in console by typing:

dotnet --info

You will get a result looking like:

Getting .net core infos in console
Getting .net core infos in console

Like mentioned in the result you can install another version or sdk by visiting https://aka.ms/dotnet-download and following the instructions or do it directly in visual studio.

There you have to open the project properties and select the targetframework dropdown. You can find an option named install another framework there. By clicking on it the browser opens and you’ll be transfered to https://dotnet.microsoft.com/download/visual-studio-sdks where you can download runtimes and sdk’s.

Proxy on ionos 1&1 webhosting

If you want to do a http(s) call per httpclient to an external destination in a Asp.NET Application on ionos webhosting you have to use a proxy server. Otherwise you’ll get a timeout of connection trial after a while with the following error message:


System.Net.Http.HttpRequestException: A connection attempt failed

because the connected party did not properly respond after a period of

time, or established connection failed because connected host has

failed to respond

The url of the internal win proxy is http://winproxy.server.lan:3128 to allow http(s) access to external destinations.

Link to ionos entry in help documentation:

https://www.ionos.de/hilfe/index.php?id=4426

Visual Studio – Git – Azure DevOps – Error pushing/pulling changes

Today I tried to connect to my Azure DevOps Account via Visual Studio to push some changed data of a project to git. First I got the error „Git failed with a fatal error. Authentication failed„. In my case the solution was to delete an entry in the windows credential manager. Read here how to open it. Just open the tab Windows Credentials and search for an entry looking like git:<yourdevopsservername>. Then you can delete it!

Afterwords I tried to open Visual Studio again to push my data to git. I got an error again saying „could not read username for visual studio terminal prompts disabled„. The solution for this case was to delete the file %localAppData%\GitCredentialManager\tenant.cache.

Hope this two steps will help someone to not spend more than one hour on solving the problem like me 😉

Asp.Net Core Web API – Bearer Authentication

Often people use Bearer Authentication for securing API requests. Normally everything works fine and you can send the token as header information and if the token is valid you can call the API without getting status code 401 unauthorized. In my case I could call the API once and while the second try I got 401 unauthorized. After hours of error searching I find my mistake. It’s very important to load the parts in startup.cs in the right order.

services.AddAuthentication
services.AddMvc

and

app.UseAuthentication
app.UseMvc

Authentication methods have to be called before Mvc methods to handle authentication early in the pipeline.

If you load it in the wrong order you might get a problem like me. Hope this hint helps somebody to save time 😉

IMAP Konto und die Option Nachverfolgen

Mit einem IMAP Konto hat man es in Outlook nicht immer ganz einfach. Normalerweise kann man eine E-Mail nachverfolgen wenn man mit der Maus einen Rechtsklick auf das Fähnchen tätigt und die Auswahl der Optionen öffnet sich. Bei einem IMAP Konto ist es etwas anders.

Mit Outlook in Kombination mit einem IMAP Konto hat man zwei Möglichkeiten eine Nachverfolgung einzurichten:

1. Möglichkeit:

Man geht mit der Maus über die betreffende E-Mail und hält die linke Maustaste gedrückt. Nun zieht man die E-Mail auf das Aufgaben Icon und lässt sie dort fallen. Dann öffnet sich ein neues Fenster in dem man die Nachverfolgung einrichten und definieren kann.

Das Aufgaben Icon in Outlook.
Das Aufgaben Icon in Outlook.

2. Möglichkeit:

Eine weitere Möglichkeit in Outlook mit einem IMAP Konto eine E-Mail zur Nachverfolgung einzurichten ist die Tastenkombination STRG + Shift + G. Zuvor muss die entsprechende E-Mail in der Liste markiert worden sein.

STRG + SHIFT + G öffnet dieses Aufgaben Dialogfenster.
STRG + SHIFT + G öffnet dieses Aufgaben Dialogfenster.

Ausgabe von Deutschen Tagesbezeichnungen eines DateTime Objektes

Die einfachste Möglichkeit um in C# aus einem DateTime Objekt den Deutschen Tagesnamen zu erhalten ist die Benutzung des Formats „dddd“ in Kombination mit der CultureInfo „de-DE“. Als Beispieldatum nehmen wir den 01.01.2020, welcher ein Mittwoch ist.

Der Code zur Ermittlung der Wochentagsbezeichnung sähe dann wie folgt aus:


var tagesName = new DateTime(2020, 1, 1).ToString("dddd", CultureInfo.CreateSpecificCulture("de-DE")); //liefert den string "Mittwoch"

Ein klarer Vorteil dieser Methode gegenüber beispielsweise einer Ermittlung per Unix Timestamp ist, dass man sich keine Sorgen um die Zeitzonen machen muss.

Weitere Infos zur Konvertierung von Datumsformaten in C# findet ihr unter: https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

Wie erstelle ich einen langlebigen Seiten Access Token für die Facebook Graph API

Für eine Anwendung benötigte ich einen Access Token, welcher per Graph API Daten von Facebook ermitteln konnte. Zunächst erstellte ich mir einen Zugriffsschlüssel für eine App. Hierzu rief ich den Endpunkt „oauth/access_token“ der API mit den entsprechenden Credentials auf.

Im Umgang mit diesem AccessToken zeigte sich leider, dass dieser nicht alle Seiten von Facebook erreichen konnte, sprich Veranstaltungen Ü18 oder mit Alkoholbezug wurden mir mit diesem Token verwehrt. Nach ein bisschen Recherche las ich, dass ein Page Access Token für meine Zwecke besser geeignet sei. Doch wie bekommt man einen solchen, welcher auch noch langlebig ist?

Die Lösung ist wie folgt: Zunächst müsst ihr euren Facebook User der Seite zuordnen und ihn mit manage_pages authorisieren. Hierzu gebt ihr im Browser die Url „https://www.facebook.com/dialog/oauth?client=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=manage_pages“ ein. Es öffnet sich ein Fenster von Facebook zur Rechtevergabe. Dort einfach die Seite mit allem authorisieren. Nun geht man in den Facebook Graph API Explorer. Diesen erreicht man unter der Url https://developers.facebook.com/tools/explorer/.

Dort gibt man in das Texteingabefeld unter dem Zugriffsschlüssel „me/accounts/“ ein. Nun werden einen in der Ausgabe alle Seiten aufgelistet zu denen man einen Bezug hat. Dort sucht ihr die entsprechende Seite aus und kopiert euch den AccessToken und fügt ihn in das obere Texteingabefeld Zugriffsschlüssel ein.

Nun klickt man links in dem Textfeld, wo der Zugriffsschlüssel angezeigt wird, auf das „i“ im blauen Punkt. Es öffnet sich ein Fenster mit Informationen zum Zugriffsschlüssel. In der dort angezeigten Tabelle seht ihr unter Ablaufzeit, dass euer Schlüssel einen Ablaufzeitpunkt hat. Er ist also noch nicht langlebig. Unten rechts in dem Fenster findet sich ein Button „Im Zugriffsschlüssel-Tool öffnen“. Diesen klickt man und es öffnet sich eine neue Seite.

Dort sieht man erneut Informationen zum AccessToken und unten rechts gibt es einen Button „Zugriffsschlüssel verlängern“. Diesen klickt man und nun hat man einen AccessToken, welcher erst abläuft, sobald der User, für welchen man der Seite Rechte erteilt hat, sein Passwort ändert oder seinen Account löscht.

Nachträgliches Ändern eines in einer WebApp erstellten WebJobs in Azure

Ich hatte vor kurzem das Szenario, dass ich einen WebJob über eine Azure WebApp angelegt habe und im Nachhinein den Zeitplan des Jobs ändern wollte. Es war ein ausgelöster WebJob für den ich den CRON-Ausdruck „0 6 * * * *“ als Trigger definiert hatte. Nun lief der WebJob allerdings jede Stunde zur Minute sechs. Allerdings wollte ich, dass der Job jeden Morgen in der Frühe um 06:00 Uhr laufen sollte. Für diese Vorgabe hätte ich den CRON-Ausdruck „0 0 6 * * *“ benötigt. Nun suchte ich nach einer Möglichkeit den von mir erstellten Trigger im Nachhinein zu bearbeiten. Leider gibt es hierfür in der WebJobs Ansicht in der WebApp keine Möglichkeit.

Man muss es etwas komplizierter angehen. In der AppService Ansicht wählt man aus der Navigation am linken Rand den Eintrag „Erweiterte Tools“. In der sich öffnenden Ansicht klickt man auf „Gehe zu“. Auch zu erreichen über den Link https://{WebServiceName}.scm.azurewebsites.net .

Nun öffnet sich ein neuer Browsertab zu Kudu. Dort wählt man aus der oberen Navigation „Debug Console“ und dort „CMD“. Es öffnet sich eine Art Dateibrowser. Dort finden wir eine Datei namens „settings.job“ unter site/wwwroot/App_Data/jobs/triggered/{NameWebJob}/.

In der Datei „settings.job“ findet sich nun die CRON Angabe, welche man manuell ändern und speichern kann. Hierfür klickt man einfach auf den Stift links neben dem Dateinamen. Es öffnet sich eine Art Texteditor in dem man nun den Eintrag editieren und speichern kann. Im Anschluss habe ich den App Service noch neu gestartet.

Wer noch weitere Informationen zu den CRON Asudrücken benötigt findet diese unter https://docs.microsoft.com/de-de/azure/app-service/web-sites-create-web-jobs#cron-expressions. Auf der Seite finden sich auch weitere Informationen zum allgemeinen Erstellen eines WebJobs.

PHP Tutorial – Einstieg: 11# switch-Anweisung (case)

In diesem Videotutorial möchte ich euch zeigen wie man eine switch-Anweisung in PHP programmiert. Gerade bei einem Abgleich von mehreren Werten ist diese gegenüber der if-Anweisung klar im Vorteil.


$test = 5;

 switch ($test)
 {
     case 3:
          echo "Die Zahl lautet 3.";
          break;
     case 5:
          echo "Die Zahl lautet 5.";
          break;
     default:
          echo "Keine Übereinstimmung gefunden.";
          break;

 }

In diesem Beispiel würde „Die Zahl lautet 5.“ ausgegeben.