部署新应用版本后,HTTP Headers 被清除

Http Headers got cleared after deploying new app version

我 运行 我的 ASP.NET MVC 应用程序在 Windows 服务器上使用 IIS 10。

我在本网站的 HTTP 响应 Headers 部分中设置了一堆自定义 header。

一段时间后,我发现他们不在了,我惊呆了。

我怀疑当我部署新的应用程序版本时它们被删除了 - 通过更改网站的 基本设置 部分中的应用程序路径有效。

如何让那些 header 持久化? 为什么他们在哪里清理? 还有什么我应该知道的吗?

如果自定义 header 是通过 IIS 服务器界面添加的,则更改将保留在服务器上应用程序的 web.config 上。在部署新版本的应用程序后,相同的内容将被替换为新的配置文件。覆盖配置文件会导致旧文件可能具有的任何自定义配置丢失,包括自定义 header 字段。根据可用的信息量,我认为这可能是可能的原因之一。

如果在iis中设置了HTTP Response Headers,则可以在web.config中查看。 那么你只需要监控谁清除了HTTP Response Headers。

关于如何监控web.config文件,可以尝试使用Win32函数ReadDirectoryChangesW。

Asp.net 使用 Win32 函数 ReadDirectoryChangesW 来监视目录和文件。一旦检测到更改,应用程序域将被回收,这可能会导致性能问题。

更多关于ReadDirectoryChangesW函数的信息可以参考这个link: ReadDirectoryChangesW function