访问 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.

然后继续进行多行堆栈跟踪,其中没有任何靠近我的代码。
发生了什么事?我刚刚添加了 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 日志
在 Apache 上运行 ASP.net MVC 时无法访问 elmah.axd
ASP.NET MVC - Elmah 不工作并为 elmah.axd 返回 404 页面