Azure Blob租赁和发布

时间:2012-11-01 12:18:58

标签: c# .net azure azure-storage

string uri = "myurl";
string blobstatus = GetBlobStatus(uri);
if (blobstatus != LeaseStatus.Locked.ToString())
{
    string response = AquireBlob(uri);
    //process data.
    string abc = ":em";
    ReleaseBlob(response, uri);
}

上面是我在blob上租借和释放锁的代码。我正在考虑使用此方法用于多实例工作者角色,我希望在x时间间隔后运行特定代码,因为多个实例可以同时执行代码。

问题在于我设法正确获取LeaseId但是当第二个实例检查blob租约状态时,它总是未指定。为什么会这样?任何线索?

我按照以下链接开始。

Leasing Windows Azure Blobs Using the Storage Client Library - blog.smarx.com

2 个答案:

答案 0 :(得分:6)

我认为您的方法不应该首先依赖于检查blob状态,而是基于决定是否获得租约。您应该总是尝试获取租约并捕获该过程中抛出的异常。这样,如果此代码在多实例环境中运行,则只有一个实例能够获取租约(而其他实例只会抛出错误)。

答案 1 :(得分:-1)

好建议..我解决了这个问题。事实证明,LeaseStatus属性并不好,永远不会返回结果。 我必须通过提交网络请求获得状态,然后我才能得到正确的结果。

相关问题