下面是我的代码,我尝试使用Entity Framework将日志插入数据库。正如您所看到的,我正在使用异步委托来执行此操作。问题是这个代码驻留在类库中,连接字符串信息和Nuget软件包在我将Entity Framework Oracle数据访问内容添加到我的代码中时添加的内容,位于此类库的app.config文件中。现在当我在同一个解决方案中添加对我的其他项目中的.dll的引用时,尝试执行异步委托将日志插入数据库我得到线程中止异常,我尝试了一切可能的人(包括添加新的应用程序。项目中的配置文件,我指的是这个类库,并在那里放入一个连接字符串)告诉stackoverflow和其他地方。但是我仍然无法摆脱这个异常。我已经在我的代码下面给出了整个堆栈调用。它在SaveLogEntry(...)方法中的using语句中抛出异常。
using (TracingEntity traceEntity = new TracingEntity())
private void WriteLineInternal(string message, string category, string componentName, string threadId,int windowsProcessId, string machineName, string exceptionThrown,string customMessage,int traceEventId, string processName, string userId)
{
loggingFunction = SaveLogEntry;
IAsyncResult obj = loggingFunction.BeginInvoke(message, category, componentName, threadId, windowsProcessId,machineName, exceptionThrown,customMessage,traceEventId,processName, userId, null, null);
}
private void SaveLogEntry(string message, string catrgory, string componentName, string threadId, int windowsProcessId, string machineName, string exceptionThrown, string customMessage, int traceEventId, string processName, string userId)
{
lock (traceLockObject)
{
try
{
using (TracingEntity traceEntity = new TracingEntity())
{
if (string.IsNullOrEmpty(ApplicationName))
{
traceEntity.INSERTTRACELOGS(message, catrgory, componentName, threadId, windowsProcessId, machineName, processName, exceptionThrown, customMessage, traceEventId, null, userId);
}
else
{
traceEntity.INSERTTRACELOGS(message, catrgory, componentName, threadId, windowsProcessId, machineName, processName, exceptionThrown, customMessage, traceEventId, ApplicationName, userId);
}
}
}
catch (Exception ex)
{
if (this.DBTraceFailed != null)
{
DBTraceFailed(ex.ToString());
}
this.WriteEntryToInternalLog(ex.ToString());
}
}
}
System.Threading.ThreadAbortException:线程正在中止。 at System.Data.Entity.Utilities.Check.NotEmpty(String value,String parameterName) 在System.Data.Entity.DbContext..ctor(String nameOrConnectionString) 在C:\ LOFT_Projects \ LoggingAndTracingLib \ LoggingAndTracingLib \ TraceDBModel.Context.cs中的LoggingAndTracingLib.TracingEntity..ctor():第21行 at LoggingAndTracingLib.CustomDBTraceListener.SaveLogEntry(String message,String catrgory,String componentName,String threadId,Int32 windowsProcessId,String machineName,String exceptionThrown,String customMessage,Int32 traceEventId,String processName,String userId)in C:\ LOFT_Projects \ LoggingAndTracingLib \ LoggingAndTracingLib \ CustomDBTraceListener.cs:第483行
答案 0 :(得分:0)
您确定已正确设置连接字符串吗?看起来框架无法在.config文件中找到正确的连接字符串,或者存在访问文件本身的问题。
有时线程中止异常可以“隐藏”真正的异常。检查内部异常以获取更多详细信息。