【发布时间】: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