2012-04-02 40 views
0

我試圖在Windows Azure訂閱中查詢託管服務的列表。在我的C#程序中,我將請求發送到URL當我嘗試列出託管服務在我的Windows Azure訂閱中時,「託管服務無效」

https://management.core.windows.net:443/<my-subscription-id>/services/hostedservices 

其中<my-subscription-id>從Azure管理門戶網站採取和表示GUID像這樣的字符串:

abcdef01-2345-4678-90ab-cdef0abcdef0 

沒有括號或任何東西。我已經處理了各種證書問題,所以我認爲證書沒問題。

響應包含此XML:

<Error xmlns="http://schemas.microsoft.com/windowsazure" 
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <Code>BadRequest</Code> 
     <Message>The hosted service is not valid.</Message> 
</Error> 

,它看起來像我想查詢特定服務的狀態,但不正確地指定其ID。然而,MSDN confirms,我使用正確的URL來獲取服務列表。

我在做什麼錯,我該如何解決?

+1

當您刪除端口信息(即:443)時會發生什麼?什麼是您發送的x-ms版本標題? – dunnry 2012-04-02 17:09:48

+0

@dunnry:港口號碼不是怪,看我的答案。 – sharptooth 2012-04-03 13:51:09

回答

0

原來問題如下。我複製粘貼一噸的代碼,包裹REST呼叫到一個接口:

[ServiceContract(Namespace = ..., ConfigurationName = ...)] 
public interface IAzureManagement 
{ 
    [OperationContract] 
    [WebInvoke(Method = "GET", UriTemplate = @"{subscriptionId}/services/hostedservices")] 
    Services GetServices(string subscriptionId); 
} 

和使用[WebInvoke]代替[WebGet]。不知道爲什麼它有什麼區別,但一旦我改變爲[WebGet]問題就消失了。

1

我同意@dunnry,你應該刪除443,此外我建議你仔細檢查你是否發送正確的訂閱ID。

如果您正在動態創建請求url,那麼我會在運行時設置一個斷點並檢查字符串是否正確。