2012-06-15 18 views
6

Próbuję użyć współdzielonego pamięci podręcznej. A ja otrzymuję następujący wyjątek podczas startu cloud emulator proccess:Azure: CacheInstaller i ConfigStoreException

Application: CacheInstaller.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: Microsoft.ApplicationServer.Caching.ConfigStoreException 
Stack: 
    at Microsoft.ApplicationServer.Caching.AzureCommon.AzureUtility.RetryExponentialTask(System.Func`1<Boolean>, System.Predicate`1<System.Exception>, System.TimeSpan, System.TimeSpan, System.TimeSpan, Int32) 
    at Microsoft.ApplicationServer.Caching.AzureCommon.Package.InitializeExternalStore(Microsoft.ApplicationServer.Caching.ICustomProvider) 
    at Microsoft.ApplicationServer.Caching.AzureCommon.Package.InitializeExternalStoreIfRequired() 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 
    at System.Threading.ThreadHelper.ThreadStart() 

Mój config:

<dataCacheClients> 
    <tracing sinkType="DiagnosticSink" traceLevel="Error" /> 
    <dataCacheClient name="default"> 
     <autoDiscover isEnabled="true" identifier="Web" /> 
    </dataCacheClient> 
    </dataCacheClients> 

Może ktoś mi pomóc? :)

Zmieniano:

używam VS 2010 SP1, Windows 7. usunąłem SDK 1.6 i ponownie zainstalować 1.7.

Chmura config (rola WWW):

<ServiceConfiguration serviceName="Cloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" schemaVersion="2012-05.1.7"> 
    <Role name="Web"> 
    <Instances count="1" /> 
    <ConfigurationSettings> 
     <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="..." /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="..." /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="..." /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled" value="..." /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=...;AccountKey=..." /> 
     <Setting name="DiagnosticsConnectionString" value="DefaultEndpointsProtocol=https;AccountName=...;AccountKey=..." /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Caching.NamedCaches" value="{&quot;caches&quot;:[{&quot;name&quot;:&quot;default&quot;,&quot;policy&quot;:{&quot;eviction&quot;:{&quot;type&quot;:0},&quot;expiration&quot;:{&quot;defaultTTL&quot;:10,&quot;isExpirable&quot;:true,&quot;type&quot;:1},&quot;serverNotification&quot;:{&quot;isEnabled&quot;:false}},&quot;secondaries&quot;:0}]}" /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Caching.Loglevel" value="" /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Caching.CacheSizePercentage" value="30" /> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString" value="UseDevelopmentStorage=true" /> 
    </ConfigurationSettings> 
    <Certificates> 
     <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" thumbprint="..." thumbprintAlgorithm="sha1" /> 
    </Certificates> 
    </Role> 
</ServiceConfiguration> 

Edited 2:

Próbowałem stworzyć pusty projekt testowy: Projekt

  1. Utworzono Windows Azure Chmura Obsługi
  2. Wybrana rola sieci ASP.NET
  3. Włączone cache na karcie pamięci podręcznej właściwości naśladowania internetowej (CO-mieszczącego)
  4. zainstalowany system Windows Azure Caching Preview
  5. Rozpoczęte chmura projekt za pomocą Nuget
  6. Ten sam wyjątek

edytowany 3:

Zainstalowałem VS 2012 RC i próbowałem stworzyć projekt testowy. Ten sam problem wystąpił.

Edited 4: szczegóły

Wyjątek:

Microsoft.ApplicationServer.Caching.ConfigStoreException: 
    Windows Azure Storage Service is not ready/available. StorageAccountName = DevStorage, BlobNamePrefix = deployment17(44)__Web ---> 
    Microsoft.WindowsAzure.StorageClient.StorageClientException: ERROR ---> 
    System.Net.WebException: The remote server returned an error: (400) Bad Request. 
    at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 
    at Microsoft.WindowsAzure.StorageClient.EventHelper.ProcessWebResponse(WebRequest req, IAsyncResult asyncResult, EventHandler`1 handler, Object sender) 
    --- End of inner exception stack trace --- 
    at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() 
    at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() 
    at Microsoft.WindowsAzure.StorageClient.CommonUtils.<LazyEnumerateSegmented>d__0`1.MoveNext() 
    at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) 
    at Microsoft.ApplicationServer.Caching.WindowsAzureBlobProvider.IsInitialized() 
    --- End of inner exception stack trace --- 
    at Microsoft.ApplicationServer.Caching.AzureCommon.AzureUtility.RetryExponentialTask(Func`1 doTask, Predicate`1 shouldRethrow, TimeSpan minBackoff, TimeSpan maxBackoff, TimeSpan deltaBackoff, Int32 retryCount) 
    at Microsoft.ApplicationServer.Caching.AzureCommon.Package.InitializeExternalStore(ICustomProvider customProvider) 
    at Microsoft.ApplicationServer.Caching.AzureCommon.Package.InitializeExternalStoreIfRequired() 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
+0

Czy chciałbyś dodać więcej informacji, np. Używasz go z dedykowaną rolą pamięci podręcznej, rolą sieci itp. Właśnie testowałem to z wieloma konfiguracjami i wszystko poszło dobrze, więc może to być coś bardzo specyficznego dla twojego projektu. Więcej informacji na temat tworzenia aplikacji pomoże ustalić przyczynę źródłową. – AvkashChauhan

+0

Dodałem trochę informacji. Może byłoby to pomocne. –

+0

Więc używasz tylko jednej roli sieciowej i dodawania do niej cache-u przez NuGet? Zrobiłem dokładnie to samo bez problemu, więc może być jedna możliwość, ponieważ w instalacji SDK 1.7 brakuje niektórych składników. Co się stanie, jeśli usuniesz 1.7 SDK i ponownie zainstalujesz i zobaczysz, jak się zachowuje? – AvkashChauhan

Odpowiedz

2

Wygląda mi na to, że był to problem, gdy próbuje zainicjować sklep mocująca dla pamięci podręcznej. Otrzymujesz 400 złych żądań od dostawcy magazynu Blob. Bez skonfigurowanego buforowania, z innego projektu testowego możesz uzyskać dostęp do swojej pamięci BLOB w pamięci dev? Czy działa emulator devstorage?

Sprawdź, czy emulator magazynu działa, sprawdzając obszar powiadomień/zasobnik systemowy i klikając prawym przyciskiem myszy ikonę małego Azure na emulatorze. Jeśli jednym z menu treści jest "Uruchom emulator pamięci masowej", usługa pamięci masowej nie działa, kliknij ją. Jeśli uważasz, że działa, kliknij Emulator Show Storage i upewnij się, że usługa Blob i inne usługi są sprawdzane i mają status uruchomionych. Jeśli tak jest, należy spróbować odczytać/zapisać dane w pamięci masowej rozwojowej blob za pomocą innej aplikacji testowej lub narzędzia innej firmy, takiego jak Cloud Storage Studio firmy Cerebrata.

System buforowania próbuje utworzyć folder w pamięci BLOB o nazwie cacheclusterconfigs, gdzie każdy z członków klastra może zobaczyć konfigurację. Z jakiegokolwiek powodu twój nie może uzyskać dostępu do pamięci BLOB, aby to zrobić.

Aby odpowiedzieć na inne pytanie, tak, CacheInstaller loguje się. Po uruchomieniu instancji, zanim jeszcze dojdzie do końca, powinieneś móc spojrzeć na emulator obliczeniowy i wybrać instancję. Następnie kliknij instancję prawym przyciskiem myszy i wybierz "Otwórz sklep lokalny". Spowoduje to otwarcie okna eksploratora, w którym emulator umieszcza pliki specyficzne dla każdej instancji. Będzie to coś w stylu C: \ Users {user} \ AppData \ Local \ dftmp \ Resources \ 8d403f60-3b09-481a-8b9c-86ab9e06954b. Identyfikator GUID jest instancją. Z tego okna przejdź do następującego katalogu: \ directory \ Microsoft.WindowsAzure.Plugins.Caching.FileStore. Tutaj zobaczysz pliki dziennika z usługi buforowania. Jeśli twoja instalacja utknęła, powinieneś zobaczyć plik w tym katalogu, taki jak DedicatedCacheLogs_CacheInstaller_xxxx.log (xxxx to liczby). To może ci pomóc. Zauważ, że po zakończeniu instalatora pamięci podręcznej wygląda na to, że istnieje usługa zamiatająca ten katalog i umieszczająca starsze pliki w katalogu LogsBackup X, który również znajduje się w tym folderze.

Należy pamiętać, że plik cacheinstaller.exe.config i powiązany plik wykonywalny są w rzeczywistości kopiowane do pakietu, a następnie do instancji emulatora z plików C: \ Program Files \ Microsoft SDK \ Windows Azure.NET SDK \ 2012- 06 \ bin \ plugins \ Katalog buforowania. Być może będziesz w stanie dodać kolejny tracelistener do pliku exe.config z tego katalogu SDK i pobrać go, aby wypluł dodatkowe informacje, jeśli nie możesz znaleźć potrzebnych informacji z katalogu instancji wskazanego powyżej.

Mam nadzieję, że te wskazówki ci pomogą. Nie mogłem odtworzyć problemu pod moim adresem, chyba że podałem zły adres konta do przechowywania na koncie na Azure, a nawet wtedy nie było to 100% pasujące do twojego błędu.

+0

Dziękuję. Wystąpił problem z pamięcią masową. Nie można uruchomić, ponieważ port był używany przez inny program. Tak łatwo :) Ale właśnie zacząłem studiować Azure. –

Powiązane problemy