Aktualnie pracuję nad automatycznym procesem wdrażania hostowanej usługi dla systemu Windows Azure. Tworzenie plików .cspkg
i .cscfg
działa idealnie, korzystając z połączenia z numerem msbuild
. Teraz piszę małą aplikację konsolową .NET, która powinna wdrożyć te pliki na platformie Azure za pomocą interfejsu REST API zarządzania.Nie można uaktualnić wdrożenia platformy Azure za pomocą interfejsu REST API zarządzania (problem z certyfikatem SSL)
Nie ma problemu z samym API. Mogę wysłać żądanie do API przy użyciu jednego z moich certyfikatów zarządzania. Przesyłam plik .cspkg
do magazynu Azure BLOB Storage, a następnie próbuję zadzwonić pod numer Upgrade Deployment
. Ale za każdym razem, gdy próbuję, otrzymuję odpowiedź "400 nieprawidłowych żądań" stwierdzającą, że nie znaleziono certyfikatu z kodem odcisku xy. Ten certyfikat to certyfikat SSL (nie certyfikat zarządzania) Używam protokołu HTTPS dla mojej domeny niestandardowej (DNS CNAME).
A teraz cała sprawa robi się ciekawie:
Kiedy wdrożyć pliki za pomocą polecenia „Publikuj” w moim Visual Studio, nie ma problemu. (Porównałem pliki .cscfg
/.cspkg
z VS iz mojego wyjścia msbuild
: oprócz kilku identyfikatorów GUID są identyczne). Co więcej, korzystając z funkcji zarządzania Silverlight w mojej przeglądarce, mogę nawet przesłać wygenerowane pliki, których nie można załadować za pomocą interfejsu API.
Po pobraniu listy wszystkich certyfikatów za pomocą wywołania List Certificates
, certyfikat, który rzekomo zaginął, najwyraźniej istnieje. Mogę również pobierać dane za pomocą wywołania Get Certificate
.
Dlaczego więc Azure ciągle mówi mi, że certyfikat nie został znaleziony podczas korzystania z połączenia Upgrade Deployment
? Czy ktoś doświadczył czegoś podobnego? Czy ktoś ma dla mnie wskazówkę? Z góry dziękuję.
P.S .: To jest to, co mówi Azure podczas korzystania z API:
<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Code>BadRequest</Code>
<Message>The certitficate with thumbprint 7b232c4a2d6e3deadbeef120d5dbc1fe8049fbea was not found.</Message>
</Error>
P.P.S .: Tak, słowo w odpowiedzi jest certitficate
, nie certificate
.
Ciekawi, ale jak sądzisz, jakie było imię Twojej usługi? Prywatny identyfikator i nazwa wdrożenia są wartościami Guid. Hosted Service name to rzeczywista wartość DNS (zawsze pisana małymi literami). Jakie jest inne nazwisko (etykieta?). Jeśli używasz UpgradeDeployment, potrzebujesz nazwy Deployment (GUID), w przeciwnym razie możesz użyć * BySlot i wskazać konkretny slot. – dunnry
Nazwa usługi nie ma nic wspólnego z prywatnym identyfikatorem lub nazwą wdrożenia. Odnoszą się one do * wdrożenia * i zmieniają się po każdym utworzeniu nowego wdrożenia. Ale jak widać w dokumentach, API potrzebuje nazwy usługi, nawet jeśli chcę zaktualizować stanowisko instalacji lub wdrożenia, które mógłbym zidentyfikować przy użyciu identyfikatora GUID.Możesz także wywnioskować, że z wzorca URI podałem w mojej odpowiedzi, biorąc pod uwagę fakt, że nie ma żadnej opcjonalnej części w URI. Zobacz mój zrzut ekranu (http://dl.dropbox.com/u/17554533/azure.png), aby sprawdzić, co oznaczają dla mnie "nazwa usługi" i "nazwa DNS". – fero
Pytam, którego nazwiska próbujesz użyć i jakie są jedyne możliwe kombinacje. Przypuszczam, że portal może być mylący. Na szczęście zawsze możesz użyć wyjścia API, by sterować wejściem i nie musisz zgadywać. – dunnry