带有SQLite的log4net:InvalidCastException:无法转换类型为' System.Data.SQLite.SQLiteFactory'的对象输入' System.Data.IDbConnection'

时间:2014-08-11 11:43:21

标签: c# asp.net .net sqlite log4net

使用log4net,当我尝试在我的Asp.net应用程序中的App_Data文件夹下打开SQLite数据库时,跟踪文件中出现以下错误。

  

log4net:错误[AdoNetAppender] ErrorCode:GenericFailure。不能   打开数据库连接[数据   来源= | DataDirectory目录| \ databasefile1.db;同步= OFF。连接   字符串上下文[ConnectionString]。 System.InvalidCastException:无法使用   将类型为“System.Data.SQLite.SQLiteFactory”的对象强制转换为类型   'System.Data.IDbConnection'。在   log4net.Appender.AdoNetAppender.CreateConnection(类型connectionType,   String connectionString)at   log4net.Appender.AdoNetAppender.InitializeDatabaseConnection()

版本细节:

  • .NET Framework 4.5.1
  • SQLite 1.0.93.0
  • log4net 1.2.11.0

我尝试更改我的sqlite数据库位置但发生了同样的错误。

在Global.asax.cs中,

void Application_Start(object sender, EventArgs e)
    {
        AppDomain.CurrentDomain.SetData("DataDirectory", Server.MapPath("~/"));
        XmlConfigurator.Configure(); 
    }
在AssemblyInfo.cs中

[assembly: log4net.Config.XmlConfigurator(ConfigFile="Web.config", Watch= true)]

在Web.config中

<log4net debug="true"><appender name="sqlite" type="log4net.Appender.AdoNetAppender"><bufferSize value="1"/><connectionType value="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.93.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/><connectionString value="Data Source=|DataDirectory|\databasefile1.db;Synchronous=Off"/><commandText value="INSERT INTO LogTable(message) VALUES (@message)"/><parameter><parameterName value="@message"/><dbType value="String"/><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%message"/></layout></parameter></appender><root><level value="ALL"/><appender-ref ref="sqlite"/></root></log4net>

1 个答案:

答案 0 :(得分:0)

看来问题在于你的connectionType配置(System.Data.SQLite.SQLiteFactory):

 <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.93.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>

这是从config samples复制的,您必须将类型和版本设置调整为sqllite版本。