2012-04-02 60 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,那么我会在运行时设置一个断点并检查字符串是否正确。