ASP.NET WebForms中Elmah引发HTTP 500.19错误:重复X-Frame-Options配置
解决Elmah中X-Frame-Options重复添加的web.config错误
这个问题我之前帮不少开发者解决过——本质就是Elmah在初始化时会尝试向web.config的内存副本中自动添加X-Frame-Options响应头,但你的配置文件(或者继承的父级配置)里已经手动添加过这个条目了。因为这个头的name属性是唯一键,重复添加自然就触发了Cannot add duplicate collection entry的错误。
给你两种直接有效的解决思路:
思路1:保留手动配置,禁用Elmah的自动添加
如果你的业务逻辑需要自己控制X-Frame-Options的取值,完全可以让Elmah别管这个头。找到web.config里的<elmah>节点,添加安全头配置来禁用这个自动行为:
<elmah> <!-- 保留你原有的Elmah配置项 --> <security> <headers> <!-- 禁用Elmah自动添加X-Frame-Options --> <add name="X-Frame-Options" disabled="true" /> </headers> </security> </elmah>
思路2:移除手动配置,让Elmah管理这个头
如果你不需要自己维护这个头,直接删掉web.config中<system.webServer>/<httpProtocol>/<customHeaders>里的X-Frame-Options条目,然后让Elmah来负责它。默认Elmah会添加SAMEORIGIN的值,如果需要自定义,也可以在Elmah配置里指定:
<elmah> <!-- 保留你原有的Elmah配置项 --> <security> <headers> <!-- 自定义X-Frame-Options的值,比如DENY或者ALLOW-FROM --> <add name="X-Frame-Options" value="SAMEORIGIN" /> </headers> </security> </elmah>
额外排查小技巧
如果按照上面的方法还是报错,记得检查父级web.config(比如站点根目录的配置文件),因为IIS的配置是会继承的,可能是父级配置已经添加了这个头,导致你的应用级配置和它冲突。
内容的提问来源于stack exchange,提问作者Wallace B. McClure
相关产品推荐
相关产品推荐

