2012-07-26 65 views
53

我安装了elmah.mvc nuget软件包,并保持该sans的默认配置,设置发送电子邮件并将其插入SQL数据库。使用Elmah MVC无法访问生产服务器上的/ elmah?

在我的本地机器上使用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

你也想看看这篇文章,如果你是在生产中:http://stackoverflow.com/问题/ 4416318/how-to-secure-elmah-axd – 2012-07-26 17:13:14

+0

我想我应该澄清一下,我只是指当通过本地主机以外的其他地方访问时,其他人不能访问我们的活动服务器。 – SventoryMang 2012-07-26 17:32:15

+0

IIS 6或7?在IIS内的.axd文件上显式设置任何权限? – Josh 2012-07-26 19:20:45

回答

116

您需要通过添加下面的配置设置在你的web.config文件中的<elmah>部分启用ELMAH远程访问。此值的默认设置为false,仅允许localhost,因此它在Visual Studio中正在本地计算机上工作。

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

我似乎总是这个忘了自己,花几分钟抓我的头;)

+3

只是谷歌搜索找到这个答案,当我意识到我已经做了 - 即将upvote它 - 大概是我上次试图配置Elmah并忘记这个!谢谢:) – 2014-04-27 00:48:20

+2

刚刚有同样的问题,杰米汉弗里斯...一些答案值得多个upvotes – 2014-07-16 17:09:14

+0

我添加了东西在system.web像DOTang说,然后这个,它的工作! – GabrielBB 2015-05-27 15:41:44

1

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

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

嗯,我不知道你是否打算把它放在system.web中,因为system.webServer只有一个标记,但我试着把它放在两个地方,同时在路径中同时尝试elmah.axd和〜/ elmah(因为它是MVC),它仍然不起作用,仍然有相同的错误。 – SventoryMang 2012-07-26 17:19:59

+1

您是否为处理程序添加了路线?您可能已经有了* .axd请求的忽略路由。 – scottm 2012-07-26 17:58:27

+0

我该怎么做?路线没有控制器/动作。还有,我确实有'routes.IgnoreRoute(“{resource} .axd/{* pathInfo}”);'但问题在于,为什么它在localhost上本地工作,甚至浏览到URL时)直接在服务器上而不添加这些处理程序或路由?这是使用Elmah.Mvc,所以很多自定义索具(这似乎是你建议基于我看到的文章)将它连接到MVC是没有必要的......尽管某些东西仍然不起作用。 – SventoryMang 2012-07-26 18:31:23