in aliyun-net-credentials/Provider/EcsRamRoleCredentialProvider.cs [358:398]
private async Task<string> GetMetadataAsync(IConnClient client, string url)
{
HttpRequest httpRequest = new HttpRequest
{
Method = MethodType.GET,
ConnectTimeout = connectTimeout,
ReadTimeout = readTimeout,
Url = url
};
var metadataToken = await GetMetadataTokenAsync(client);
if (metadataToken != null)
{
httpRequest.Headers.Add("X-aliyun-ecs-metadata-token", metadataToken);
}
HttpResponse httpResponse;
try
{
httpResponse = await client.DoActionAsync(httpRequest);
}
catch (Exception ex)
{
throw new CredentialException("Failed to connect ECS Metadata Service: " + ex.GetType() + ": " +
ex.Message);
}
if (httpResponse != null && httpResponse.Status == 404)
{
throw new CredentialException("The role name was not found in the instance");
}
if (httpResponse != null && httpResponse.Status != 200)
{
throw new CredentialException(EcsMetadataFetchErrorMsg + " HttpCode=" + httpResponse.Status);
}
if (httpResponse != null) return httpResponse.GetHttpContentString();
throw new CredentialException("Http response is null");
}