首页 > 解决方案 > 未针对在 IIS 上运行的 ASP.net Core 应用程序更新环境变量

问题描述

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

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

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

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

标签: asp.net-coreiisenvironment-variables

解决方案


请检查 IIS 上的环境变量。

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

在此处输入图像描述


推荐阅读