Azure Functions > Achtung Runtime Version
Aus gegebenen Anlass möchte ich heute einmal kurz die Lösung für ein gestern aufgetretenes Problem bei der Entwicklung von Azure Functions zeigen. Nachdem ich mit Visual Studio 2017 und dem Azure SDK eine Azure Function erstellt, um Funktionen erweitert und lokal mit dem Emulator getestet hatte, functionierte der Code ohne Fehler. Unter anderem auch das Abholen eines Authentifizierungs-Token per ADAL.
Im nächsten Schritt habe ich dann eine Azure Function im Azure Portal angelegt und meinen Code über das Publishing Profil bereitgestellt. Doch anders als lokal kam hier folgender Fehler:
2018-11-07T07:20:00.021 [Information] Executing ‘DemoFunc’ (Reason=’Timer fired at 2018-11-07T07:20:00.0211930+00:00′, Id=7e0ff08b-630e-422c-b1e8-d5f0a32e6509) 2018-11-07T07:20:01.167 [Information] C# Timer trigger function executed at: 11/7/2018 7:20:01 AM 2018-11-07T07:20:01.168 [Information] An error occured : System.TypeLoadException: Could not load type ‘System.Security.Cryptography.SHA256Cng’ from assembly ‘System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’. at Microsoft.Identity.Core.NetDesktopCryptographyManager.CreateSha256Hash(String input) at Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Flows.AcquireTokenHandlerBase.LogReturnedToken(AdalResult result) at Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Flows.AcquireTokenHandlerBase.PostRunAsync(AdalResult result) at Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.Flows.AcquireTokenHandlerBase.RunAsync() at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireTokenForClientCommonAsync(String resource, ClientKey clientKey) at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireTokenAsync(String resource, ClientCredential clientCredential) at Demo.DemoFunc.Run(TimerInfo myTimer, TraceWriter log) in C:\_demo\DAK-PoC\Inventation\Function1.cs:line 89 2018-11-07T07:20:01.175 [Information] Executed ‘DemoFunc’ (Succeeded, Id=7e0ff08b-630e-422c-b1e8-d5f0a32e6509)
Wie kann das sein; lokal läuft alles einwandfrei und in Azure gibt es Probleme. Also habe ich Logs analysiert und mit der Kudu Console Dateien verglichen. Alles schien soweit okay. Nach etwas Recherche bin dann auf die Lösung im folgenden Artikel gestoßen: https://docs.microsoft.com/de-de/azure/azure-functions/functions-versions
Quasi aus Reflex habe ich die Runtime Version der Function auf die neue V2 gestellt. Diese verwendet .NET Core 2.
Da mein Code aber auf .Net 4.6.1 basiert, muss die Runtime Version auf V1 eingestellt sein!!!
Kleiner Schalter, große Wirkung!