C#AWS SQS客户端因it而无法访问';s保护级别

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

因此,我一直有一个问题,就是如何让AWS的示例为C#工作。我直接从他们的站点复制下面的代码并将其放入我的程序中,但当它调用client.ListQueues(请求)时;它告诉我,由于它的保护级别,它无法访问。我花了时间搜索,但我不明白为什么这不起作用。任何帮助都将不胜感激

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有效。多谢。