如何在App Config文件上的C#中为AWS AmazonSQSClient设置RegionEndPoint

Kid*_*ick 2 c# amazon-sqs aws-sdk

我已经在我的应用程序配置中这样声明了RegionEndpoint

<add key="AWSRegion" value="EUWest1" xdt:Transform="Insert"/>
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我尝试将其称为AWSRegion

 private static string RegionEndPoint = ConfigurationManager.AppSettings["AWSRegion"];
Run Code Online (Sandbox Code Playgroud)

所以当我声明我的SQSClient时出现错误,无法从字符串转换为RegionEndPoint

var SQSClient = new AmazonSQSClient(credentials, RegionEndPoint);
Run Code Online (Sandbox Code Playgroud)

我试图在这里理解这个问题,如何为C#.NET SDK设置EndPoint / Region:EC2Client?

但它适用于EC2Client,因此对我来说似乎不起作用。

我也曾尝试使用这样的AWS开发工具包声明regionendpoint

private static RegionEndpoint RegionEndPoint = ConfigurationManager.AppSettings["AWSRegion"];
Run Code Online (Sandbox Code Playgroud)

我还收到一条错误消息,提示无法从字符串类型隐式转换为Amazon.RegionEndpoint

因此,如果有办法在配置文件中添加RegionEndPoint并在SQSClient中使用它,请帮助我。

Che*_*iya 5

ConfigurationManager.AppSettings["AWSRegion"]返回字符串值,EUWest1但是RegionEndpoint是一个类。

AmazonSQSClientConstructo希望将class的实例RegionEndpoint作为第二个参数,但是由于传递的是字符串值,因此会出现错误。

您可以RegionEndpoint使用以下方法从Configuration值获取类实例。

RegionEndpoint类具有静态方法GetBySystemName。您需要将区域名称传递给此方法,它将返回适当的RegionEndpoint类实例。

但是为此,您需要具有正确的区域名称才能传递。您需要将该值放入配置中。在您的情况下,配置值应为eu-west-1。配置值EUWest1在这里不起作用。

您可以在此处找到所有有效的AWS区域名称

<add key="AWSRegion" value="eu-west-1" xdt:Transform="Insert"/>
Run Code Online (Sandbox Code Playgroud)

使用上面的配置值,您可以使用以下代码来获取基于它的Region。

private static RegionEndpoint RegionEndPoint = 
      RegionEndpoint.GetBySystemName(ConfigurationManager.AppSettings["AWSRegion"]);
Run Code Online (Sandbox Code Playgroud)

上面的代码将为您提供Region的RegionEndPoint实例EU (Ireland) Region,现在您可以AmazonSQSClient按以下方式使用它。

var SQSClient = new AmazonSQSClient(credentials, RegionEndPoint);
Run Code Online (Sandbox Code Playgroud)

这将帮助您解决所面临的问题。