调用此方法Licensing.RegisterLicense(licenseKey);
时,出现以下内部错误的初始化异常:
消息=无法识别的配置部分DbProviderFactories。 (C:\ Actevis \ Development \ Actevis.Cloud \ SqlLiteTestBed \ bin \ Debug \ SqlLiteTestBed.vshost.exe.Config line 16)
以下是令人讨厌的配置部分:
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
我已尝试在app.config文件中添加appsetting
部分,但仍会出现相同的错误。由于app.config文件中不存在DbProviderFactories
,我假设该部分是由ServiceStack注入的。
我正在尝试使用ServiceStack.Ormlite.SQLite32
。这是安装的nuget包。我已经复制了许可证文件几次,以确保那里没有问题。
由于
答案 0 :(得分:1)
问题是你的Web.config无效,并且在第一次尝试访问Web.config时会抛出错误,这是ServiceStack在查找 servicestack:license 时所做的事情应用设置。
注意:<DbProviderFactories>
应在<system.data>
标记内声明:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
这是由依赖System.Data.SQLite.x86包中的Web.config.transforms引起的。这也可能是NuGet的web.config.transform中的一个错误,因为规则要求将其添加到<system.data>...</system.data>
下,但它会被添加到顶层,从而创建无效的Web.config配置。
OrmLite不需要整个配置,因此可以删除。我还联系了SQLite维护者,告知他这个问题,希望将来能解决这个问题。
虽然我正在考虑对OrmLite的Sqlite包进行更改以嵌入dll并删除导致此错误的Sqlite包的依赖。
答案 1 :(得分:1)
感谢您的回复。我能够弄清楚发生了什么:
安装ServiceStack.Ormlite.Sqlite32软件包时,还会安装SQLServer的Entity框架和EntityFramework。将Sqlite和EntryFramework一起用于Sql Server时似乎存在问题。我从项目中删除了所有与实体框架相关的DGG,并从app.config文件中删除了这些部分。这解决了这个问题。