Mamy rolę wykonawczą Azure - .NET 4.0 - która działa poprawnie po wdrożeniu na platformie Azure na osFamily = "2" (Server 2008R2). Kiedy jednak wdrożyć z osFamily = „3” (Server 2012) i żaden inny kod zmienia, roli pracownika nieustannie przetwarza następujące 2 błędy w dziennikach zdarzeń serwera:Azure Worker Role działa na osFamily = "2" (Server 2008R2), ale nie działa na osFamily = "3" (Server 2012)
Błąd nazwę aplikacji: WaWorkerHost .exe, wersja: 6.0.6002.18488, sygnatura czasowa: 0x505cf7ca Błąd Nazwa modułu: KERNELBASE.dll, wersja: 6.2.9200.16384, sygnatura czasowa: 0x5010ab2d kod wyjątku: 0xe0434352 błędów offset: 0x00000000000189cc procesu Błąd ID: 0xefc Błąd czas rozpoczęcia aplikacji: 0x01cdd4318f76d221 Ścieżka do aplikacji powodującej błąd: E: \ base \ x64 \ WaWorkerHost.exe Błąd modułu ścieżka: D: \ Windows \ system32 \ KERNELBASE.dll Zgłoś Id: cf1810b0-4024-11e2-93ec-00155d4250e3 Błąd pakiet pełna nazwa: Błąd pakiet względne aplikacja ID:
Zastosowanie: WaWorkerHost. exe Framework Wersja: v4.0.30319 Opis: proces został zakończony z powodu nieobsługiwanego wyjątku. Wyjątek Info: System.InvalidOperationException Stos: na Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() na System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext, System.Threading.ContextCallback, System .Object, Boolean) w System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) w System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System .Threading.ContextCallback, System.Object) w System.Threading.ThreadHelper.ThreadStart()
Jakieś pomysły?
UPDATE ------------------ Znaleziono 3. wyjątek:
Zastosowanie: WaWorkerHost.exe Framework: v4.0.30319 Opis: Proces został zakończony z powodu nieobsługiwanego wyjątku. Wyjątek Info: System.Security.Cryptography.CryptographicException Stos: w Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() na System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext, systemu .Threading.ContextCallback, System.Object, logiczny) w System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, logiczna) w System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Threading.ThreadHelper.ThreadStart()
Używamy certyfikatu w LocalComputer/My do odszyfrowywania ciągów połączeń. Certyfikat zostanie pomyślnie wdrożony do OsFamily = "2" (Server 2008R2) i ma przypisaną do niego osobę Worker (zweryfikowaną w sesji RDP). Jednak dla OsFamily = "3" (Server 2012) - certyfikat nie zostanie wdrożony, stąd błąd kryptograficzny. W następstwie wsparcia Azure ... UGH.
Czy kontrola kiedykolwiek dotarła do 'OnStart()'? – sharptooth
Czy próbowałeś debugować kod w emulatorze, aby znaleźć metodę, która może powodować błąd? Zakładam, że używasz pakietu SDK Azure 1.8. –
Tak - aplikacja przechodzi do OnStart i loguje OnStart do Elmah (SQL). Tak - w pakiecie Azure 1.8 SDK i działa dobrze w emulatorze - bez wyjątków z wybraną OSFamily. – viperguynaz