调用ServiceStack RegisterLicense方法时抛出的配置异常

时间:2014-02-16 00:05:25

标签: servicestack

调用此方法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包。我已经复制了许可证文件几次,以确保那里没有问题。

由于

2 个答案:

答案 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文件中删除了这些部分。这解决了这个问题。

相关问题