AWS SDK, C#:捕获 GetUserAsync 异常并继续



我在dotnetcore 3.1(C#(上,我正在使用AWS开发工具包。 我有一个测试凭据的功能,我在AmazonIdentityManagementServiceClient上使用GetUserAsync方法进行测试。 问题是,当我的凭据错误时,会引发异常并停止执行。

public async Task<GetUserResponse> TestCredentials(string accessId, string accessKey)
{
AWSCredentials awsCredentials = new BasicAWSCredentials(accessId, accessKey);
AmazonIdentityManagementServiceClient client = new AmazonIdentityManagementServiceClient(awsCredentials);
var userAsync = client.GetUserAsync();
try
{
await userAsync;
}
catch (Exception ex)
{
// Log the error here
var something = 100;
}
return userAsync.Result;
}

当使用不正确的登录时,我仍然想要处理一个结果,但由于执行已停止(至少在我的测试中(,我无法对其进行任何操作。 如何告诉我的代码捕获异常,并仍然返回userAsync.Result

以下是我对完整性的测试。

[TestMethod()]
public async Task TestBadCredentialsTest()
{
var awsAccessKeyId = "WRONG";
var awsSecretAccessKey = "EVENWORSE";
AWSCredentialsService awsCredentialsService = new AWSCredentialsService();
var getUserResponse = await awsCredentialsService.TestCredentials(awsAccessKeyId, awsSecretAccessKey);

// Test never gets to here
var httpStatus = getUserResponse.HttpStatusCode;
Assert.AreNotEqual(HttpStatusCode.OK, httpStatus);
}

任何帮助将不胜感激。

任务可能会以异常结果完成。它永远不可能两者兼而有之。

不同的 HTTP 客户端库具有不同的功能 - 我不熟悉 AWS - 但其中许多都有一种可以抛出的"详细异常"类型。如果捕获到该特定异常类型,则可以获取异常详细信息,有时还可以获取整个 HTTP 响应本身。但是,可用于此目的的类型和方法都取决于客户端库。

相关内容

  • 没有找到相关文章

最新更新