2012-12-07 10 views
5

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.

+0

Czy kontrola kiedykolwiek dotarła do 'OnStart()'? – sharptooth

+0

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. –

+0

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

Odpowiedz

5

Od Azure Inżynierów Wsparcia:

Po kopania głębiej, znalazłem różnicę: w OS Rodzina 2, WaWorkerHost jest uruchomiony przez rachunek tymczasowy (o nazwie GUID) generowanego przez proces inicjalizacji rolę to konto ma pozwolenie na dostęp do prywatnego klucza certyfikatu; W OS Family 3, WaWorkerHost jest działający na koncie "NETWORK SERVICE", to konto nie ma uprawnień dostępu do klucza prywatnego .

Kontaktuję się z grupą producencką, postaramy się dokładniej zbadać ten problem: . Będę cię informować.

+0

Czy była kiedykolwiek obsługiwana poprawka tego problemu? To niedorzeczne, że rola pracownika/rola internetowa nie ma dostępu do kluczy prywatnych dla certyfikatów * ty * dodaj. To zdecydowanie jest błąd! – Jaxidian

+0

Najwyraźniej jest to błąd, który zostanie naprawiony w następnym SDK (?), A obejście polega na dodaniu '' do '.csdef' wewnątrz' 'lub '' 'węzeł. [źródło] (http://stackoverflow.com/a/14468164/294863) – Jaxidian

Powiązane problemy