【发布时间】:2021-05-03 03:18:42
【问题描述】:
我正在编写针对 Azure 云运行的 C# 代码。我的应用程序是一个 ASP.NET Core Web 服务,它公开方法但没有 UI。
有时我想使用 Microsoft Azure 存储模拟器在本地运行我的代码。当我的代码启动时,首先发生的事情之一是:
var container = new BlobContainerClient(_connectionString, s);
bool exists = await container.ExistsAsync(ct);
if (!exists)
await container.CreateAsync(cancellationToken: ct);
在本地运行时,我有时会忘记启动 Azure Storage Emulator。发生这种情况时,我的代码需要一分钟才能超时并告诉我它无法到达“云”。
我想要实现的是:让程序在本地运行时快速给我很好的错误信息,但在云端实际运行时使用更宽松的超时策略。
我可以通过执行以下操作来减少上述超时:
var blobClientOptions = new BlobClientOptions();
blobClientOptions.Retry.MaxRetries = 0;
var container = new BlobContainerClient(_connectionString, s, blobClientOptions);
...但是在真正的云上运行时我不希望这样;我希望它重试。一种选择可能是像上面一样将重试次数设置为零,但仅在本地运行时。
我有一个特定于开发的配置文件 (appsettings.Development.json)。是否可以在配置文件中配置此类超时/重试设置?
或者是否有其他最佳实践方法来完成我寻求的“快速开发失败”行为?
提前致谢!
【问题讨论】:
-
这是一个控制台应用程序吗?网络应用程序?天蓝色功能?
-
我的应用程序是一个公开方法但没有 UI 的 Web 服务。
标签: c# azure asp.net-core timeout retry-logic