1
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 租约状态时,它总是未指定。为什么会这样?任何线索?

我按照以下链接抢先一步。

使用存储客户端库租用 Windows Azure Blob - blog.smarx.com

4

2 回答 2

7

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

于 2012-11-01T13:00:31.813 回答
-2

好建议..我解决了这个问题。发现实际上 LeaseStatus 属性不好并且从不返回结果。我必须通过输入网络请求来获得状态,然后我才能得到正确的结果。

于 2012-11-05T07:57:58.190 回答