我有一个安装了最新的 ELMAH.MVC NuGet 包的 MVC WebAPI 站点。在 Visual Studio 下,我可以访问
http://localhost:1234/elmah
并获取错误日志,就像我应该能够做到的那样。
当我将它部署到 Azure 时,它会引发错误。幸运的是,Elmah 正在将错误记录到 App_Data 中的 XmlError 日志中,我发现了这一点:
<error errorId="92ad3ee1-3fd5-449a-8cb4-0474aa771aab"
application="/LM/W3SVC/417796901/ROOT"
host="RD00155D430783" type="System.Web.HttpException"
message="Server cannot set status after HTTP headers have been sent."
source="System.Web"
detail="System.Web.HttpException (0x80004005): Server cannot set status after HTTP headers have been sent.

然后继续进行多行堆栈跟踪,其中没有任何靠近我的代码。
这是怎么回事?我刚刚添加了 Elmah.MVC nuget 包,并对 Web.Config 进行了以下更改
<elmah>
<security allowRemoteAccess="yes"/>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
<location path="elmah.axd">
<system.web>
<allow roles="*" />
</system.web>
</location>
它不会靠近我的任何控制器,因此我无法控制何时设置或发送 Http 状态标头。
谢谢你的帮助。