对于在IIS上运行的ASP.net Core应用程序,环境变量未更新

问题描述

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

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

有人遇到过同样的问题吗?您是如何解决的? 如果您在同一个IIS中运行多个网站和/或Web应用程序,则“强制”运行iisreset是不理想的,因此,实际上不是一个选择。但是如上所述,它似乎与为应用程序池设置身份有关。.但是我可能错了..任何人都有想法吗?

但是我一直在寻找解决方案。.我唯一发现的问题是github上的一个问题,该问题现在已经关闭,他们通过运行iisreset解决了这个问题。.还有网上提到的许多帖子,将LoadUserProfile设置为true用于应用程序池,也可以回收池,但是如上所述。那是行不通的。

解决方法

请检查IIS上的环境变量。

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

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...