我在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 响应本身。但是,可用于此目的的类型和方法都取决于客户端库。