我已经在我的应用程序配置中这样声明了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中使用它,请帮助我。

最佳答案

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

AmazonSQSClient Constructo希望将类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);


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

关于c# - 如何在App Config文件上的C#中为AWS AmazonSQSClient设置RegionEndPoint,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53295267/

10-09 19:28