Próbuję użyć emulatora pamięci Azure do pracy z pamięcią typu blob. Po prostu nie mogę zmusić go do pracy i zmarnowałem cały dzień próbując bezskutecznie. Wciąż dostaję zabronionego błędu 403, mimo że jest to miejsce dla programistów. Mam nadzieję, że ktoś tu może mi pomóc.Azure EMV - tworzenie blobów daje 403 Forbidden message
Poprzednio z powodzeniem uruchomiłem ten sam program na platformie Azure. Jednak moja 3-miesięczna wersja próbna wygasła bez mojego używania w ogóle, a teraz gdy wróciłem do przeglądania Azure, muszę uruchomić emulator pamięci masowej (po zmianie ciągu połączenia na pamięć dev).
Opiszę szczegółowo, co zrobiłem.
pierwsze chciałbym zapewnić, że mam wszystko, co niezbędne jest zainstalowany (chyba):
mam zarówno Visual Studio 2012 Pro i Visual Studio 2012 Express, do sieci (co jest darmowe). Zainstalowałem dodatkowe elementy wymagane dla platformy Azure za pomocą instalatora platformy internetowej. Jeśli patrzę w Dodaj/Usuń programy widzę mam
- Windows Azure Tools for Visual Studio 2012 -v2.1
- Azure Biblioteki Windows for .NET -v2.1
- Emulator Windows Azure - v2.1
- Windows Azure Authoring Tools -v2.1
jestem w stanie stworzyć projekt chmura w VS2012, jeśli chcę, i jeśli mogę to zrobić z powodzeniem wprowadza na emulatorze. Wydaje mi się, że mój problem dotyczy tylko pamięci emulatora.
Oto co zrobiłem:
Krok 1.
utworzyć nowy projekt ASP.NET MVC4. Korzystam z platformy .NET 4.5. który tworzy podstawowy szablon projektu z HomeController.cs i AccountController.cs
Krok 2.
używam Nuget dostać "Windows Azure Storage". Wierzę, że to stawia WindowsAzure.Storage.dll wersja 2.0.6.1 w moich odniesień projektu. Poza tym widzę, że moje referencje obejmują również -Microsoft.WindowsAzure.Configuration v2.0.0.0 -Microsoft.WindowsAzure.Diagnostics v2.1.0.0 -Microsoft.WindowsAzure.ServiceRuntime v2.1.0.0 -Microsoft .WindowsAzure.StorageClient v1.7.0.0
Krok 3.
W pliku Web.config, dodać następujący tag w obrębie tagów
jest to w zasadzie nazwa konta i klucz wszyscy powinni używać podczas używania emulatora.
Etap 4.
W HomeController.cs utworzyć działanie. Ta akcja ma na celu utworzenie kontenera na magazynie BLOB Azure i przesłanie do niego pliku. Oto kod.Jak widać jest to dość dużo standardowy kod można znaleźć w przykładach początkujących
public ActionResult AddBlobToBlobContainerStorageEmulator()
{
// Retrieve storage account from connection string
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["EmulatorStorageConnectionString"]);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to the previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("myemulatortcont");
// Create the container if it doesn't already exist.
container.CreateIfNotExists();
// Retrieve reference to a blob named "mytestblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myemulatortestblob.jpg");
// Create or overwrite the "mytestblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"E:\TUTORIALS\Windows Azure\Azure NOTES and stuff\table.jpg"))
{
blockBlob.UploadFromStream(fileStream);
}
return Content("Blob uploaded to container on storage emulator");
}
Krok 5.
I upewnij się, że emulator obliczeniowa jest uruchomiona: Start> Wszystkie programy > Windows Azure> Emulator> Windows Azure Compute Emulator
Krok 6.
To wszystko. Nie utworzyłem projektu w chmurze ani nic takiego, więc kiedy go uruchomię, będzie on działał na "lokalnym serwerze sieciowym IIS" zgodnie z właściwościami projektu (znanym również jako IIS Express).
Teraz idę do Debug> Uruchom debugowania i uruchamia witrynę w oknie przeglądarki, jak oczekiwano na localhost: 57810.
Gdybym przejdź do
http://localhost:57810/Home/AddBlobToBlobContainerStorageEmulator
powinien odpalić moją metodę działania.
Zamiast widzę
Linia 118 jest w RED .... więc w zasadzie pojemnik nie może być utworzony.
Czy ktoś może mi powiedzieć, co jest nie tak. Czy muszę w jakiś sposób dodać jakieś pozwolenie do emulatora pamięci programistycznej? Nie rozumiem, dlaczego jest napisane "Zakazane".
Zastanawiałem się, czy może jest jakiś problem na moim komputerze, czy może istnieje jakiś konflikt między Azure. Czy wersje bibliotek dll w moim projekcie są w jakiś sposób niepoprawne dla emulatora programistycznego? A może jest błąd w wersji 2.1?
mam wyjaśnił dokładnie, jak zrobiłem mój projekt, ale byłbym skłonny, aby przesłać całą rzecz jeśli ktoś chce tylko spróbuj uruchomić go.
Dziękujemy za udzielenie pomocy.
Jeśli debugujesz, jak wygląda "storageAccount"? Czy "EmulatorStorageConnectionString" jest poprawny? –
Czy przyznałeś publiczny dostęp do swojego obiektu blob? –
@lc: EmulatorStorageConnectionString powinien być poprawny, jest to domyślny ciąg znaków używany w emulatorze. Dostałem go stąd: http://msdn.microsoft.com/en-us/library/windowsazure/hh403989.aspx – Gary