在花了“比谨慎更多的时间”调试处理程序未正确应用的问题后,我确定 IIS 管理器中显示的 SiteRoot/web.config 是不是实际上是被 IIS 使用。
我怎么知道的?我已经Web.config
用无效的 XML- 该网站继续使用默认处理程序和模块运行,而 IIS 管理器将正确地抛出一个错误无效的 XML。
信息:
- 测试/无效的 Web.config不是被 IIS 读取,否则解析失败。
- 静态内容是正在提供服务,其根相对于 Web.config。
- 测试/无效的 Web.config是正在被 IIS 管理器读取,因为无法解析/加载(符合预期)。
- 正确使用“探索”可以打开 Web.config 文件所在的文件夹。
- NTFS 区分大小写已禁用 根据这个答案
web.config
。和外壳都存在同样的问题Web.config
。 - AppPool 在本地帐户下运行,并且有效的 NTFS 访问已经验证。
- 没有相关的 Windows 应用程序或系统事件日志表明读取或解析配置时出现错误。
可能发生了什么情况?可以做哪些进一步的诊断?
答案1
虽然我不知道最初的原因是什么......
这两个因素之一“修复”了这个问题。遗憾的是,具体的变化是什么还未确定。
applicationHost.config
从另一台机器复制了 inetsvr 。虽然这可能会影响各种全局模块等,使用了相同的 AppPool 和 Site 定义,因为它们是通过自动化安装的。
由于这是 VS Code 的“恢复”截断原始文件,无法对相关更改进行差异化。
删除了 的内容
C:\inetpub\temp\appPools
。由于变化的时间,我无法确认此操作是否比使用不同的 applicationHost 更相关/更不相关。