2012-07-26 95 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