【问题标题】:How to get x-ms-request-id from Azure table storage api call如何从 Azure 表存储 api 调用中获取 x-ms-request-id
【发布时间】:2012-07-29 15:25:42
【问题描述】:

我在 Windows azure 应用程序上调用 azure tablestorage api 时出现缓慢行为。我需要获取特定调用的请求 ID(响应标头中的 x-ms-request-id)。有没有办法使用 storageclient api 获取它?存储客户端 api 是否甚至公开了这个 id?如果没有,有没有其他方法可以得到这个id?

我正在通过以下方式使用 api:

        public UserDataModel GetUserData(String UserId)
    {
        UserDataModel osudm = null;
        try
        {
            var result = (from c in GetServiceContext().OrgUserIdTable
                          where (c.RowKey == UserId)
                          select c).FirstOrDefault();

            UserDataSource osuds = new UserDataSource(this.account);
            osudm = osuds.GetUserData(result.PartitionKey, result.UserName);
        }
        catch (Exception e)
        {
        }
        return osudm;
    }

【问题讨论】:

    标签: azure azure-storage azure-table-storage


    【解决方案1】:

    您在此处询问的内容更多与 WCF 数据服务相关,而不是与 Windows Azure 相关(存储客户端客户端 API 使用此功能)。以下是一些如何访问响应标头的示例代码:

        var tableContext = new MyTableServiceContext(...);
        DataServiceQuery<Order> query = tableContext.Orders.Where(o => o.RowKey == "1382898382") as DataServiceQuery<Order>;
        IEnumerable<Order> result = query.Execute();
        QueryOperationResponse response = result as QueryOperationResponse;
    
        string requestId;
        response.Headers.TryGetValue("x-ms-request-id", out requestId);
    

    因此,您首先要做的就是创建查询并将其转换为 TType 的 DataServiceQuery。然后,您可以对该查询调用 Execute 方法并将其转换为 QueryOperationResponse。此类将使您能够访问所有标头,包括 x-ms-request-id

    请注意,在这种情况下,您将无法使用 FirstOrDefault,因为它不会返回 IQueryable 并且您无法将其转换为 TType 的 DataServiceQuery(除非有其他方法可以使用 WCF 数据服务)。

    注意:调用这么慢的原因可能是你的查询造成的。当您查询 OrgUserIdTable 表时,您只根据 RowKey 进行过滤。我不知道您在该表中有多少数据或分区,但如果您不使用 PartitionKey,这可能会对性能产生重大影响。您必须知道,如果不包括 PartitionKey,您将强制搜索所有分区(可能在多个服务器上),这可能会导致调用如此缓慢。

    我建议您查看以下实际指南,以更好地了解分区如何以及为什么与 Windows Azure 存储中的性能相关:Designing a Scalable Partitioning Strategy for Windows Azure Table Storage

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2017-12-23
      • 2017-08-08
      • 2019-04-09
      • 2021-08-24
      • 2020-08-09
      相关资源
      最近更新 更多