我安装了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,但实际的站点地址)时,它实际上也有效。那么我没有什么许可?好像它是在服务器级别。
答案 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>