如何从Astoria DataContext响应中提取“eTag”或“x-ms-request-id”?

时间:2010-09-19 14:34:25

标签: ado.net datacontext azure-storage azure-table-storage etag

Azure表白皮书提到,如果使用数据时出错,x-ms-request-id对于发送给Microsoft很有用。如果我确实有这样的错误,我希望我的try...catch块可以将其保存到某处以备将来分析。

此外,我还需要在Table存储中提取ETag值。

如何在Exception出现时提取此信息并使其可用?

HTTP/1.1 204 No Content
Content-Length: 0
ETag: W/"datetime'2008-10-01T15%3A27%3A34.4838174Z'"
x-ms-request-id: 7c1b5e22-831d-403c-b88a-caa4443e75cb

2 个答案:

答案 0 :(得分:0)

取决于您的客户端实现,但它们都是HTTP 1.1标头。

例如,(假设.NET WebRequest类)类似于:

WebRequest request = WebRequest.Create("http://myazurestore.server.com");

....

WebResponse response = request.GetResponse();

string mSRequestId = response.Headers["x-ms-request-id"];

可行吗

编辑(对于Storage Client Lib)。 ..

如果您使用的是客户端库,则可以从CloudBlob上的Properties集合中获取ETag

所以......

Cloudblob blob = container.GetBlobReference("blobname.ext");

var eTag = blob.Properties.ETag

属性是一个blobProperties对象。它应该提供对大多数所需数据的访问。

MSDN:http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.blobproperties_members.aspx

答案 1 :(得分:0)

您可能想要在CodePlex上查看我的开源Azure Table Storage Client项目。

Lucifure Stash允许轻松访问ETag以及HttpWebRequest和HttpWebResponse对象。