我已经在这样的应用程序配置中声明了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中使用它,请帮助我。
答案 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);
这将帮助您解决所面临的问题。