55

我安装了 elmah.mvc nuget 包,并保留了该 sans 的默认配置,以设置发送电子邮件并将其插入 SQL 数据库。

在我的本地计算机上,当我使用 Visual Studio 主机时,我可以打开我的应用程序并访问 /elmah 以查看错误报告。但是,当我尝试在生产环境中访问 /elmah 时,出现两个错误,首先是403 access is denied服务器错误。然后在我的电子邮件中(来自 elmah)我得到:

System.Web.HttpException: Server cannot set status after HTTP headers have been sent.

任何人都知道这里发生了什么以及如何解决?谢谢。

到目前为止,我按照以下答案的建议尝试了以下方法:

<system.webServer>

<handlers>
  <add name="elmah" verb="GET" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
</handlers>

而在<system.web>

<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>

我尝试将路径设置为既elmah.axd简单又简单~/elmah。所有仍然给出相同的错误,并且仍然可以在本地工作,但不能在生产中。

编辑:当我远程进入服务器并通过浏览器访问它时它实际上也有效(不使用本地主机,而是实际的站点地址)。那我没有什么权限?似乎它在服务器级别。

4

2 回答 2

118

您需要通过将以下配置设置添加到<elmah>web.config 文件中的部分来启用 Elmah 进行远程访问。此值的默认设置是 false,它只允许 localhost,因此它在 Visual Studio 中的本地计算机上工作。

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

我自己似乎总是忘记这一点,花几分钟挠头;)

于 2012-07-27T02:45:54.113 回答
1

确保在 web.config 文件的 webServer 部分中定义了 HttpHandler。

<system.webServer>
  <httpHandlers>
    <add name="elmah" verb="GET" path="elmah.axd"  type="Elmah.ErrorLogPageFactory, Elmah"/>
  </httpHandlers>
</system.webServer>
于 2012-07-26T17:10:40.250 回答