【发布时间】:2014-09-12 01:20:38
【问题描述】:
我目前在用于 .Net 版本 3.0.2-prerelease 的 Azure SDK 中的基于任务的异步 API 存在一些并发问题。
我有一个网站名称列表
var webSites = new [] { "website1", "website2" };
从中,我使用基于任务的 API 来创建或删除网站。两者偶尔都会失败:
await Task.WhenAll(webSites.Select(x => webSiteClient.WebSites.CreateAsync(
"westeuropewebspace",
new WebSiteCreateParameters
{
SiteMode = WebSiteMode.Limited,
ComputeMode = WebSiteComputeMode.Shared,
Name = x
WebSpaceName = "something"
}
)));
很少,我收到一个异常,抱怨服务器场“Default1”已经存在。我知道这个服务器场是为免费网站隐式创建的,但目前没有办法在创建网站之前通过 API 创建这个服务器场(只有“DefaultServerFarm”可以)。
删除时,会发生类似情况:
await Task.WhenAll(webSites.Select(x => webSiteClient.WebSites.DeleteAsync(
"westeuropewebspace",
x,
new WebSiteDeleteParameters
{
DeleteAllSlots = true,
DeleteEmptyServerFarm = true,
DeleteMetrics = true,
}
)));
通常(大约每隔一次),我得到一个“website2”无法找到的异常,尽管它确实存在。不过,该网站已被删除。
更新: 我已将第二个 Task.WaitAll 序列化为一个 foreach 循环,但仍然出现异常。现在唯一的区别是,当删除“website1”失败时,“website2”仍然存在于云端(因为没有发送第二次删除请求),我必须通过门户手动删除它。
【问题讨论】:
标签: azure azure-sdk-.net