设置如下:
带有 IIS 10 的 Windows Server 2022 标准版。
基于 ASP .NET 4.8 的应用程序,使用Integrated mode
和运行Application Pool Identity
。
我正在尝试删除以下标题:
Server
,,,,。X-Powered-By
X-ASPNet-Version
X-ASPNetMVC-Version
无论做什么,标题都会保留。
尝试过的事情:
RESPONSE HEADERS
从标题中删除服务器级别X-Powered-By
- 无效果,仍然显示在动态内容上。在服务器 applicationhost.config 配置文件和应用程序配置文件中设置 enableVersionHeader 无效:
<configuration>
<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>
</configuration>
- 在服务器级别设置无效:
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
</configuration>
将 DisableServerHeader DWORD 注册表值设置为 1,并重新启动 IIS,但无效:
HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters!DisableServerHeader
尝试修改
Global.asax
以删除 ASPNetMVC 标头,但它破坏了应用程序。
我确认,服务器级别的更改已延伸至网站级别。我也尝试在网站的 web.config 中手动设置。效果相同(无)。
URL 扫描已不再可用,因此它不再是一个选项。最后一个选项似乎是使用 URL 重写,但如果可能的话,我宁愿不使用它,因为据说有原生解决方案。
我做错了什么?我遗漏了什么吗?
这些类型的标头可以在网站级别或 IIS 级别添加。单击 IIS 控制台中的网站后,打开 HTTP 响应标头,您应该会看到此处的标头列表以及条目类型。如果条目类型为继承,则表示此条目仍处于您的 IIS 级别。您可以在 applicationhost.config 中验证这一点。
您可以从这里将其删除,也可以从 IIS 控制台中删除它,单击服务器并打开 HTTP 响应标头后,将其删除并验证响应。
似乎网站在过程中出了点问题。我删除了它并重新创建了它,这在某种程度上解决了这个问题。网站
web.config
仍然完全一样,但与标题相关的更改开始起作用。我不知道是我没有理解还是只是没有按照我期望的方式工作,但X-ASPNetMVC-Version
必须将它们放在应用程序源代码文件中Global.asax.cs
,而不是在运行时(即在构建/部署之后)放在文件中。感谢您提供的答案和帮助。我认为您可以编辑应与您的应用程序一起分发的 web.config 并添加以下行: