【问题标题】:Is it possible to reference environmental variables within a .Net projects web.config settings?是否可以在 .Net 项目 web.config 设置中引用环境变量?
【发布时间】:2019-07-26 20:33:25
【问题描述】:

我正在为.Net 项目设置开发模板。我使用dot-net-cas-client 进行由ADFS 支持的身份验证。问题是,我们的 CAS 开发人员有时会将服务更改/迁移到新的 URL。

因此,如果大量项目已上线并且 CAS URL 的更新已更改。我不想为每个实时项目的 web.config file 手动更新 CAS URL 位置(我确实考虑创建一个 Powershell 脚本,该脚本将通读所有服务器目录以搜索 web.config 文件,然后逐行阅读并捕获要替换的 CAS URL 字符串,但这似乎已经过时并且可能有问题)。

我希望在系统或机器级别使用环境变量,这样web.config 文件可以引用一个位置并在那里获取当前 URL。因此,当/如果发生更改时,只需要更新一个位置。

我发现我可以添加一个键来获取环境变量的值并在项目代码中使用它,但我没有找到任何关于然后在 web.config 文件中直接使用该键或引用的信息。

我尝试创建和引用一个键,直接引用环境变量%environmentVariableName%,但不确定是否可以在web.config 中实现。

我尝试直接引用变量%system.variable%,但没有获取到环境变量值。

dot-net-cas-client 设置:

<casClientConfig casServerLoginUrl="https://example.com/cas/login"....

替换为:

<casClientConfig casServerLoginUrl="%environmentVariableName%"....

<casClientConfig casServerLoginUrl=%environmentVariableName%....

<casClientConfig casServerLoginUrl=Environment.ExpandEnvironmentVariables(ConfigurationManager.AppSetting("environmentVariableName"))....

以上所有错误(缺少引号)或请求将我发送到...%environmentVariableName%... 而不是...example.com/cas/login...

我知道您可以添加一个我也尝试过的 KEY:

<add key='SomeSetting' value='%environmentVariableName%'/>

但是在web.config文件的设置中没有看到任何关于直接引用该KEY的信息。

dot-net-cas-client"casServerLoginUrl" 和其他属性需要用引号封装的字符串。或者将我定向到我的 URL,但使用 %environmentVariableName% 而不是存储在该变量中的值。

【问题讨论】:

    标签: .net plugins web-config environment-variables cas


    【解决方案1】:

    是的,我也希望通过 AWS 发布到环境变量来做类似的事情。我还没有找到灵丹妙药,但这就是我找到的。

    如果您想使用上面描述的方式,变量不会自动扩展(尽管可能在 AZURE/.NETcore 中它们会这样做???): How do you put environmental variables in web.config? 您必须在所有用途中自己扩展它 - (也许包装函数会很好) 你也可以使用 Environment.GetEnvironmentVariable(myvar)

    var someSetting = Environment.ExpandEnvironmentVariables(
                     ConfigurationManager.AppSetting("SomeSetting"))
    

    一种 powershell 方式(正如你之前提到的,它对我来说似乎也很老套,但可能是最好的解决方案) https://anthonychu.ca/post/overriding-web-config-settings-environment-variables-containerized-aspnet-apps/

    【讨论】:

    • 嗨,对不起,这不起作用。我可以在环境变量中创建一个指向字符串的键,但不能在 web.config 文件中创建或使用变量。因此,虽然我可以创建描述变量,但以后不能在 web.config 中使用它,例如: var setting = Environment.ExpandEnvironmentVariables( ConfigurationManager.AppSetting("SomeSetting"));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多