C#AWS SQS客户端因it而无法访问';s保护级别
因此,我一直有一个问题,就是如何让AWS的示例为C#工作。我直接从他们的站点复制下面的代码并将其放入我的程序中,但当它调用client.ListQueues(请求)时;它告诉我,由于它的保护级别,它无法访问。我花了时间搜索,但我不明白为什么这不起作用。任何帮助都将不胜感激C#AWS SQS客户端因it而无法访问';s保护级别,c#,amazon-web-services,amazon-sqs,C#,Amazon Web Services,Amazon Sqs,因此,我一直有一个问题,就是如何让AWS的示例为C#工作。我直接从他们的站点复制下面的代码并将其放入我的程序中,但当它调用client.ListQueues(请求)时;它告诉我,由于它的保护级别,它无法访问。我花了时间搜索,但我不明白为什么这不起作用。任何帮助都将不胜感激 var client = new AmazonSQSClient(); // List all queues that start with "aws". var request = new ListQueuesReques
var client = new AmazonSQSClient();
// List all queues that start with "aws".
var request = new ListQueuesRequest
{
QueueNamePrefix = "aws"
};
var response = client.ListQueues(request);
var urls = response.QueueUrls;
if (urls.Any())
{
Console.WriteLine("Queue URLs:");
foreach (var url in urls)
{
Console.WriteLine(" " + url);
}
}
else
{
Console.WriteLine("No queues.");
}
由于可以在某些平台的文档中找到,因此方法
ListQueues
不可用。文件说:
对于.NET Core、PCL和Unity,此操作仅以异步形式提供。请参阅ListQueuesAsync
因此,您必须使用异步方法ListQueuesAsync
,并将调用方法设为nyc。您的代码应该如下所示:
public async Task<Result> SomeAction()
{
var client = new AmazonSQSClient();
// List all queues that start with "aws".
var request = new ListQueuesRequest
{
QueueNamePrefix = "aws"
};
var response = await client.ListQueuesAsync(request);
// rest of the code
}
公共异步任务SomeAction()
{
var client=new AmazonSQSClient();
//列出所有以“aws”开头的队列。
var请求=新建ListQueuesRequest
{
QueueNamePrefix=“aws”
};
var response=wait client.ListQueuesAsync(请求);
//代码的其余部分
}
您能显示准确的错误信息吗?您是在具有角色的EC2实例上运行此操作,还是在具有凭据文件的计算机上运行此操作?您是否为其提供了一套有效的AWS凭据?请随意编辑您的问题,以提供更多详细信息。我从Visual studio获得的这是一个内联错误,因此它甚至不是在我运行它时,它希望我将其更改为ListQueuesAsync。错误为“error CS0122'AmazonSQSClient.ListQueues(ListQueuesRequest)”由于其保护级别而无法访问“谢谢您,但我仍然很困惑,为什么亚马逊会像我在这个网站上那样指定它?我是否错过了那个页面上的某些内容,或者他们的示例是错误的?@rammaidy他们的示例对于经典的.NET是正确的,但当你使用例如.NET Core时就不是了。在ListQueues
方法描述中,有一个关于它的注释,我在AmazonSimpleEmailServiceClient.SendMail中遇到了相同的问题。使用SendMailAsync有效。多谢。