无法使用Elmah MVC访问生产服务器上的/ elmah?

时间:2012-07-26 17:09:08

标签: c# asp.net-mvc elmah http-status-code-403

我安装了elmah.mvc nuget软件包,并保留了默认配置,即设置发送电子邮件并将其插入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的路径。所有仍然会给出相同的错误,仍然在本地工作,但不在生产中。

编辑:当我远程进入服务器并通过浏览器访问服务器(不使用localhost,但实际的站点地址)时,它实际上也有效。那么我没有什么许可?好像它是在服务器级别。

2 个答案:

答案 0 :(得分:118)

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

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

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

答案 1 :(得分:1)

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

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