2014-01-06 20 views
2

ELMAH的創作者提供了一個表創建腳本來記錄異常:ELMAH - 在ELMAH_Error表應用和源字段之間的區別

CREATE TABLE [dbo].[ELMAH_Error] 
(
    [ErrorId]  UNIQUEIDENTIFIER NOT NULL, 
    [Application] NVARCHAR(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [Host]  NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [Type]  NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [Source]  NVARCHAR(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [Message]  NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [User]  NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
    [StatusCode] INT NOT NULL, 
    [TimeUtc]  DATETIME NOT NULL, 
    [Sequence] INT IDENTITY (1, 1) NOT NULL, 
    [AllXml]  NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL 
) 

誰能告訴我什麼時候ApplicationSource應該是不同的?

<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" applicationName="My Cool App"/> 

什麼是SourceApplication通過errorLog元素的applicationName屬性設置?正在執行的程序集的名稱?

+0

或許是執行程序集的名稱空間? –

回答

0

這應該是包含拋出異常的類的程序集的程序集名稱。

實施例:

System.Web.HttpException (0x80004005): The controller for path '/scripts/knockout-custombindings' was not found or does not implement IController. 
    at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) 
    at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) 
    at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) 
    at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

在這種情況下,被System.Web.Mvc.dll程序要求一個不存在,並且不映射到MVC控制器的文件。在這種情況下,Source將等於System.Web.Mvc