访问 elmah 时部署在 Azure 上的 MVC 站点返回错误

Posted

技术标签:

【中文标题】访问 elmah 时部署在 Azure 上的 MVC 站点返回错误【英文标题】:MVC site deployed on Azure returns error when accessing elmah 【发布时间】:2013-03-09 11:20:31 【问题描述】:

我有一个安装了最新的 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 状态标头。

感谢您的帮助。

【问题讨论】:

你确认App_Data文件夹是在服务器上创建的吗? 该错误表明缓冲已关闭,并且当某些东西试图更改标头(例如重定向)时,某些东西开始将数据发送回客户端。不能说为什么 elmah 会这样做。 您说您正在使用http://localhost:1234/elmah,但您的配置显示elmah.axd。你试过直接访问 elmah.axd 吗? Elmah.Mvc 具有在 appSettings 中设置的设置,elmah configSection 可能有效,但我还要确保您的 appSettings 中没有冲突设置。 ***.com/questions/11674464/… 的重复项?如果是这样,请参阅下面的答案... 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

允许远程访问:

<elmah>
      <security allowRemoteAccess="true"/>
</elmah>

【讨论】:

以上是关于访问 elmah 时部署在 Azure 上的 MVC 站点返回错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志

Elmah.MVC 与 Elmah.contrib.Mvc

在 Apache 上运行 ASP.net MVC 时无法访问 elmah.axd

ASP.NET MVC - Elmah 不工作并为 elmah.axd 返回 404 页面

如何调用部署在 azure 上的 WEB api 服务结构?

无法让 ELMAH 在 IIS7.5 上与 ASP.NET MVC2 一起使用