Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft企业库无法通过ODBC写入日志_C#_Sql Server_Stored Procedures_Odbc_Enterprise Library - Fatal编程技术网

C# Microsoft企业库无法通过ODBC写入日志

C# Microsoft企业库无法通过ODBC写入日志,c#,sql-server,stored-procedures,odbc,enterprise-library,C#,Sql Server,Stored Procedures,Odbc,Enterprise Library,在我的应用程序中,MEL设置为使用基于GenericDatabase(ODBC)的数据库侦听器,如下所示: GenericDatabase db = new GenericDatabase(_connectionString, OdbcFactory.Instance); TraceListener traceListener = new FormattedDatabaseTraceListener(db, _writeLogStoredProcName, _addCategoryStoredP

在我的应用程序中,MEL设置为使用基于GenericDatabase(ODBC)的数据库侦听器,如下所示:

GenericDatabase db = new GenericDatabase(_connectionString, OdbcFactory.Instance);
TraceListener traceListener = new FormattedDatabaseTraceListener(db, _writeLogStoredProcName, _addCategoryStoredProcName, _formatter);
ODBC设置为连接到SQL Server驱动程序。“WriteLog”存储过程如下所示:

ALTER PROCEDURE [dbo].[WriteLog]
(
    @EventId int, 
    @Priority int, 
    @Severity nvarchar(32), 
    @Title nvarchar(256), 
    @Timestamp datetime,
    @MachineName nvarchar(32), 
    @AppDomainName nvarchar(512),
    @ProcessID nvarchar(256),
    @ProcessName nvarchar(512),
    @ThreadName nvarchar(512),
    @Win32ThreadId nvarchar(128),
    @Message nvarchar(1500),
    @FormattedMessage ntext,
    @LogId int OUTPUT
)
AS 

    INSERT INTO [LOG] (
        EVENTID,
        PRIORITY,
        SEVERITY,
        TITLE,
        [TIMESTAMP],
        MACHINENAME,
        APPDOMAINNAME,
        PROCESSID,
        PROCESSNAME,
        THREADNAME,
        WIN32THREADID,
        MESSAGE,
        FORMATTEDMESSAGE
    )
    VALUES (
        @EventId, 
        @Priority, 
        @Severity, 
        @Title, 
        @Timestamp,
        @MachineName, 
        @AppDomainName,
        @ProcessID,
        @ProcessName,
        @ThreadName,
        @Win32ThreadId,
        @Message,
        @FormattedMessage)

    SET @LogID = @@IDENTITY
    RETURN @LogID
当我执行以下代码时,我得到一个错误:

LogEntry logEntry = new LogEntry();
logEntry.Message = "Test Message";
logEntry.Priority = 1;
logEntry.Categories.Add("Error");

LogWriter logWriter = GetLogger();

// ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Procedure or function 'WriteLog' expects parameter '@EventID', which was not supplied.
logWriter.Write(logEntry);
由于某些原因,参数没有传递到我的存储过程中,我通过SQLServer探查器对其进行了验证。执行SP时,探查器仅显示以下内容:

WriteLog
我还尝试更改SP参数的标题,使其具有各种命名,例如:@eventid、@eventid、@eventid、@eventid、@eventid,但没有任何效果


问题出在哪里?

我还没有找到关于我的问题的任何信息,所以我用Blackjack和hookers创建了自己的自定义日志库