我有一个安装了最新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状态标头。
感谢您的帮助。
答案 0 :(得分:0)
itanex是对的!将空文本文件(即placeholder.txt)放在App_Data文件夹中,并将其标记为“内容”和“始终复制” - 这将确保创建App_Data文件夹。另外,正如Simon指出的那样,正确的路径(基于您的配置)是/elmah.axd
答案 1 :(得分:0)
通过https://stackoverflow.com/a/11680786/1037948:
允许远程访问:
<elmah>
<security allowRemoteAccess="true"/>
</elmah>