Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在.net中读取Elastic Beanstalk环境属性?_Asp.net_.net_Amazon Web Services_Amazon Elastic Beanstalk - Fatal编程技术网

Asp.net 如何在.net中读取Elastic Beanstalk环境属性?

Asp.net 如何在.net中读取Elastic Beanstalk环境属性?,asp.net,.net,amazon-web-services,amazon-elastic-beanstalk,Asp.net,.net,Amazon Web Services,Amazon Elastic Beanstalk,如何从我的AWS Elastic Beanstalk应用程序中读取以下环境属性: Configuration > Software Configuration > Environment Properties 以下方法均无效: ConfigurationManager.AppSettings["MyServiceUrl"] ConfigurationManager.AppSettings["aws:elasticbeanstalk:application:environment.

如何从我的AWS Elastic Beanstalk应用程序中读取以下环境属性:

Configuration > Software Configuration > Environment Properties

以下方法均无效:

ConfigurationManager.AppSettings["MyServiceUrl"]
ConfigurationManager.AppSettings["aws:elasticbeanstalk:application:environment.MyServiceUrl"]
Environment.GetEnvironmentVariable("MyServiceUrl")
Environment.GetEnvironmentVariable("aws:elasticbeanstalk:application:environment.MyServiceUrl")
“完全限定”名称尝试来自


有什么想法吗?

.ebextensions/myoptions.config
文件中:

option_settings:
  - option_name: MyServiceUrl
    value: change me
<appSettings>
  <add key="MyServiceUrl" value="change me" />
</appSettings>
这将在您的EB环境属性部分中添加“MyServiceUrl”选项(正如您已经看到的)。部署时,这将向
Web.Config
文件添加以下内容:

option_settings:
  - option_name: MyServiceUrl
    value: change me
<appSettings>
  <add key="MyServiceUrl" value="change me" />
</appSettings>
捕获物:

您需要确保
Web.Config
文件不包含此设置,否则EB不会替换它。如果Visual Studio部署包包含此设置,则EB不会替换它,并且当您通过代码访问属性时,您将始终收到部署值

解决方案:

在您的
Web.Release.config
文件中,在Visual Studio部署期间删除该设置:

<appSettings>
  <add key="MyServiceUrl" xdt:Transform="Remove" xdt:Locator="Match(key)" />
</appSettings>


这将在Visual Studio部署期间从
Web.Config
中删除该设置,并允许EB在EB部署期间将该值添加到文件中。

在Elastic Beanstalk中,此行为似乎已更改。医生现在说

AWS管理控制台中应用的设置将覆盖相同的设置 配置文件中的设置(如果存在)。这让你有 配置文件中的默认设置,并使用 控制台中特定于环境的设置

因此,您现在可以在web.config和Elastic Beanstalk配置中使用相同的配置名称,并且Elastic Beanstalk值将覆盖web.config中的任何配置。看起来EB只是将新条目添加到web.config文件中,因此在这两个位置定义的任何值都将有两个条目。由于EB添加的条目在文件中的后面,因此它们优先。

确实,文件上指示:

AWS管理控制台中应用的设置将覆盖配置文件中的相同设置(如果存在)。这使您可以在配置文件中拥有默认设置,并在控制台中使用特定于环境的设置覆盖这些设置。有关优先级和其他更改设置方法的详细信息,请参阅配置选项

。。。我认为它指的是.ebextensions配置文件,而不是app.config或web.config文件。请参见上面所示的链接,其中引用了适用的“”规则;有人指出,需要优先考虑的是“在创建环境或更新环境期间指定的设置”,因此我理解的是在部署期间设置的设置值优先(这些设置位于app.config/web.config中)


我刚刚测试了这个,上面的答案是正确的,仍然有效。您必须在已部署版本中删除上的app.config/web.config键,以查看是否考虑了“环境属性”。

根据Matt的回答,Beanstalk将它们称为“环境变量”,但对于.Net,它们实际上插入了web.config文件中,除此之外,根据下面的说明:AWS中似乎有一个bug,它将导致配置文件即使被注释掉也不会更新。看起来他们不是在解析文件,而是在进行字符串级别的比较,以确定键是否存在于web.configIt中。在Elastic Beanstalk中,此行为似乎已更改。文档现在说“AWS管理控制台中应用的设置覆盖配置文件中的相同设置(如果存在)。这允许您在配置文件中拥有默认设置,并在控制台中使用特定于环境的设置覆盖它们。”