【问题标题】:Environment variables not updating for ASP.net Core application running on IIS未针对在 IIS 上运行的 ASP.net Core 应用程序更新环境变量
【发布时间】:2020-08-11 21:19:16
【问题描述】:

我有一个设置为使用环境变量配置的 ASP.net Core 应用程序,我已经发布了该应用程序并创建了一个在 IIS 默认网站“下方”运行的 Web 应用程序。 Web 应用程序在其自己的应用程序池上运行,并且 LoadUserProfile 设置为 true,身份设置为 ApplicationPoolIdentity。 我的问题是,一旦我更改我的一个环境变量并回收应用程序池,Web 应用程序就不会获取我的环境变量的更改值(它应该)。 要让应用程序获取环境变量,我需要运行 iisreset(仅从 GUI 管理器重新启动 IIS 是不够的)

但是,我在另一台服务器上进行了完全相同的设置,但有一个例外,应用程序池的身份设置为特定帐户,在这种情况下,应用程序确实会拾取在之后对环境变量所做的任何更改应用程序池回收。

有人遇到过同样的问题吗?你是怎么解决的? 如果您在同一个 IIS 中运行多个网站和/或 Web 应用程序,那么“强制”运行 iisreset 并不理想。所以这不是一个真正的选择。但如前所述,它似乎与为应用程序池设置的身份有关..但我可能错了..有人有什么想法吗?

我已经用谷歌搜索了一个解决方案,但是.. 我唯一发现的是 github 上的一个问题,该问题现在已经关闭,他们通过运行 iisreset 解决了这个问题.. 网上还有很多帖子提到将 LoadUserProfile 设置为 true用于应用程序池并回收池,但如前所述.. 那是行不通的事情。

【问题讨论】:

    标签: asp.net-core iis environment-variables


    【解决方案1】:

    请检查 IIS 上的环境变量。

    1. 打开 IIS 管理器并选择您的网站
    2. 从“管理”部分打开“配置编辑器”
    3. 在第一个下拉菜单(部分)中,选择 "system.webServer/aspNetCore"
    4. 在第二个(来自)上,选择 web.config
    5. 然后选择“environmentVariables”,您可以根据需要添加/删除按钮进行配置。

    【讨论】:

    • 这是否仅适用于您在 Web.config 中设置了环境变量的情况?如果您使用 PowerShell 或 GUI 或 set x=y 命令,则不是?
    • 您可以在 Generate Script 中通过 Appcmd 或 PowerShell 进行更改,如appcmd.exe set config "aspcoreMVC" -section:system.webServer/aspNetCore /+"environmentVariables.[name='1',value='2']"Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/aspcoreMVC' -filter "system.webServer/aspNetCore/environmentVariables" -name "." -value @{name='1';value='2'}
    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多