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

时间:2018-11-14 07:45:50

标签: c# aws-sdk amazon-sqs

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

<add key="AWSRegion" value="EUWest1" xdt:Transform="Insert"/>

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

 private static string RegionEndPoint = ConfigurationManager.AppSettings["AWSRegion"];

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

var SQSClient = new AmazonSQSClient(credentials, RegionEndPoint);

我在这里How to set the EndPoint / Region for the C# .NET SDK : EC2Client?

尝试了这个问题的理解。

但适用于EC2Client,因此对我来说似乎不可行。

我还试图使用这样的AWS开发工具包声明regionendpoint

private static RegionEndpoint RegionEndPoint = ConfigurationManager.AppSettings["AWSRegion"];

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

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

1 个答案:

答案 0 :(得分:4)

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

AmazonSQSClient构造器希望将类RegionEndpoint的实例作为第二个参数,但是由于您要传递字符串值,因此会出现错误。

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

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

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

您可以找到AWS here的所有有效区域名称

<add key="AWSRegion" value="eu-west-1" xdt:Transform="Insert"/>

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

private static RegionEndpoint RegionEndPoint = 
      RegionEndpoint.GetBySystemName(ConfigurationManager.AppSettings["AWSRegion"]);

以上代码将为您提供EU (Ireland) Region区域的RegionEndPoint实例,现在您可以按如下所示将其用于AmazonSQSClient

var SQSClient = new AmazonSQSClient(credentials, RegionEndPoint);

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