[英]ELMAH not logging in ASP.NET MVC 2
我無法弄清楚我在這里做錯了什么,嘗試在我的MVC 2應用程序中使用ELMAH並且它不會記錄任何內容。
這是我在web.config(相關部分)中的內容
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
<elmah>
<security allowRemoteAccess="0" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ELMAH.SqlServer" />
<!--
<errorMail from="youremail@example.com" to="youremail@example.com" cc="" subject="Elmah Error" async="true" smtpPort="25" smtpServer="[EmailServerName]" userName="" password="" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
-->
</elmah>
<connectionStrings>
...
<add
name="ELMAH.SqlServer"
connectionString="data source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ELMAH_Logging.mdf;Integrated Security=SSPI;Connect Timeout=30;User Instance=True;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.Web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
...
</httpHandlers>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
...
</httpModules>
</system.Web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
</modules>
<handlers>
<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
...
</handlers>
</system.webServer>
然后使用DotNetDarren.com的代碼,但無論我做什么,都沒有記錄異常?
如果無法記錄錯誤,Elmah會無聲地失敗...重新檢查elmah使用的所有連接字符串,您可能會在那里看到問題。
這是用於制作數據庫表的表腳本
CREATE TABLE [dbo].[ELMAH_Error](
[ErrorId] [uniqueidentifier] NOT NULL,
[Application] [nvarchar](60) NOT NULL,
[Host] [nvarchar](50) NOT NULL,
[Type] [nvarchar](100) NOT NULL,
[Source] [nvarchar](60) NOT NULL,
[Message] [nvarchar](500) NOT NULL,
[User] [nvarchar](50) NOT NULL,
[StatusCode] [int] NOT NULL,
[TimeUtc] [datetime] NOT NULL,
[Sequence] [int] IDENTITY(1,1) NOT NULL,
[AllXml] [varchar](max) NOT NULL,
CONSTRAINT [PK_ELMAH_Error] PRIMARY KEY NONCLUSTERED
(
[ErrorId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[ELMAH_Error] ADD CONSTRAINT [DF_ELMAH_Error_ErrorId] DEFAULT (newid()) FOR [ErrorId]
我不確定這是否會對你有所幫助,但我第一次嘗試將ELMAH納入我的網站時遇到了同樣的問題。 首先,我甚至看不到錯誤屏幕,其次,一旦我排序,沒有報告錯誤。 這兩個都是由system.WebServer缺少部分引起的。 我正在使用MVC3.0站點(最近從2.0轉換)。 我在配置和你的配置之間真正看到的唯一區別是你在system.WebServer的處理程序部分沒有preCondition =“integratedMode”(見下文)。 也許這會導致你的問題?
<handlers>
<add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
編輯
對不起,我原來的想法沒有幫助 - 只是幾個想法:
我必須回應Paul的preCondition,但我在每個條目的模塊部分下都有preCondition="managedHandler"
。
我還在allowRemoteAccess="1"
的安全組下使用allowRemoteAccess="1"
,但我鎖定了路徑,以便只有管理員級別經過身份驗證的用戶才能通過控制器調用訪問該頁面。
我注意到XML錯誤日志條目被注釋掉了。 它是否通過XML模式而不是SQL工作? 我知道當我剛開始時,我必須在XML模式下工作,直到我處理了連接字符串和數據庫模式問題。
您可能還會遇到完全/中等信任問題,具體取決於部署,但我認為在這些情況下您會從elmah獲得例外。 您是否嘗試過查看機器上的事件日志? 這也幫助我度過了我所設定的日益增長的痛苦。
最后,我剛剛在1月14日更改日志中注意到這一點: http : //code.google.com/p/elmah/source/detail? r = 782指向ELMAH - 過濾404錯誤 ,這只是說ErrorFilter模塊需要最后注冊過濾以按預期工作。 你沒有粘貼過濾器配置參數,所以我懷疑它是否適用但訂單的事情已經注冊確實很重要所以也許有一些關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.