【发布时间】:2020-03-10 11:42:50
【问题描述】:
我正在编写一个控制台应用程序,它将一个 blob 从源(使用 SAS Uri)复制到目标。 我正在获取 blob 状态属性以在复制时查找复制状态。 6 小时后,应用程序未写入控制台(我每 2 或 3 分钟将状态写入控制台)。 blob 大小很大,因此需要花费大量时间(超过 6 小时)。 我的控制台处于活动状态,但 6 小时后控制台上没有打印任何内容。
谁能建议如何知道副本有什么问题?
try
{
await targetBlob.StartCopyAsync(SasURI);
while (targetBlob.CopyState.Status == CopyStatus.Pending)
{
Console.WriteLine("Blob Copy Pending");
Thread.Sleep(120000);
targetBlob.FetchAttributes();
if (targetBlob.CopyState.Status == CopyStatus.Aborted || targetBlob.CopyState.Status == CopyStatus.Failed || targetBlob.CopyState.Status == CopyStatus.Invalid)
{
Console.WriteLine("Blob Copy Failed");
}
}
if (targetBlob.CopyState.Status == CopyStatus.Success)
{
Console.WriteLine("Blob Copy Success");
IsSucc = true;
}
else
{
Console.WriteLine("Blob Copy Failed");
}
}
catch (Exception ex)
{
Console.WriteLine("Blob Copy Failed due to exception:"+ex.Message);
}
注意:我将 blob 副本保存在 try-catch 下。
【问题讨论】:
-
我们在这里谈论的是什么尺寸?
-
如果你只是移动文件,你看过 Azure 数据工厂吗?它可以执行数据迁移并通过 http 调用启动。
-
我认为控制台在 6 小时后没有响应。可能应用程序卡在某个地方?您能否使用 NLog(示例)并将您的日志控制台和日志文件一起编写。您将看到相同的控制台和文件将停止同一行。这意味着您的线程或应用程序冻结!
-
感谢大家的cmets。该问题已通过启用常规配置设置下的始终开启得到解决。