4

我有一个安装了最新的 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.&#xD;&#xA;

然后继续进行多行堆栈跟踪,其中没有任何靠近我的代码。

这是怎么回事?我刚刚添加了 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 状态标头。

谢谢你的帮助。

4

2 回答 2

0

通过https://stackoverflow.com/a/11680786/1037948

允许远程访问:

<elmah>
      <security allowRemoteAccess="true"/>
</elmah>
于 2013-10-04T13:44:08.377 回答
0

itanex 是对的!在 App_Data 文件夹中放置一个空文本文件(即 placeholder.txt)并将其标记为“内容”和“始终复制” - 这将确保 App_Data 文件夹正在创建。此外,正如西蒙指出的那样,正确的路径(基于您的配置)是 /elmah.axd

于 2013-07-21T16:36:31.297 回答