【问题标题】:Sqlite Connection from AppFabric Provider来自 AppFabric 提供程序的 Sqlite 连接
【发布时间】:2015-01-26 17:25:48
【问题描述】:

我们希望在我们的项目中使用 AppFabric 缓存,并使用包括 ReadThruogh-WriteBehind 功能的 Sqlite。我成功创建了 Provider 并注册到 GAC。如果我选择 mssql 服务作为数据提供者,一切都会成功。另一方面,如果我选择 sqlite,它会在 GAC 中的 Provider 上的这一行引发异常。

SQLiteConnection conn = new SQLiteConnection(@"path");

此异常来自 GAC 中的 Provider,但如果我在服务中编写此行,它可以工作。所以问题是,如果我想从 GAC 连接 sqlite,它会引发异常:

缓存提供程序在读取期间抛出异常。

错误信息中没有更多解释,但是如果尝试从服务连接sqlite,则连接成功。 Sqlite db 文件允许所有人阅读。

似乎存在身份验证问题或类似问题。有什么解决办法?

【问题讨论】:

    标签: sqlite gac appfabric


    【解决方案1】:

    来自http://msdn.developer-works.com/article/12056989/.ErrorCode%26lt%3BERRCA0025%26gt%3B%3ASubStatus%26lt%3BES0001%26gt%3B

    您收到的错误代码转换为 DataCacheErrorCode.ReadThroughProviderFailure 所以这是发生在服务端而不是客户端的错误所以 客户端配置将无济于事。

    在这种情况下,您应该首先 检查您是否创建了 Read-Through 提供程序并将其安装在 缓存服务器。

    如果您创建了一个 CUSTOM Read-Through 提供程序(AppFabric 1.1 中的新功能)和一个 该提供程序的 READ 方法中发生异常。更多的 有关在以下位置创建提供程序的详细信息 http://msdn.microsoft.com/en-us/library/hh361698(v=azure.10).aspx

    如果这是一个可重现的错误,那么您应该能够轻松调试 缓存服务器上的 DistributedCacheService.exe 进程并放置一个 PUT 方法上的断点并单步执行以查看是否可以 发现异常。

    测试和调试提供程序部分 详细的。

    【讨论】:

    • 感谢 stuartd 的回答,但正如其所写的“在这种情况下,您应该首先检查您是否创建了 Read-Through 提供程序”,我检查了 sqlite,我知道问题出在该行。当我尝试在 GAC 中打开 sqliteconnection 时,它会引发异常,而当我尝试在 wcf Web 服务中打开时它会起作用。您有什么想法,在 GAC 中无法连接到 sqlite 可能是什么原因?
    • 正如referenced article 所说,在开发机器上设置一个单节点缓存集群并对其进行调试,这应该可以解释为什么它不工作
    • 是的,正如您所说,在 GAC 中调试提供程序后,问题来自 SQLite.dll。我想我需要将 System.Data.SQLite.dll 注册到 GAC 中。当一切正常时,我会分享它。
    【解决方案2】:

    在 GAC 中调试提供程序后,问题是关于 System.Data.SQLite.dll。我也必须将该 dll 注册到 GAC 中,因为它也试图从 gac 中找到该 dll,因此它引发了异常。您需要确定,dll 应该具有强名称。要使其具有强名称,您需要按照说明进行操作,

     1. sn -k keyPair.snk  
     2. ildasm System.Data.SQLite.dll
     3. /out:System.Data.SQLite.il  ren System.Data.SQLite.dll
     4. System.Data.SQLite.dll.orig  ilasm System.Data.SQLite.il /dll /key=
        keyPair.snk
    

    如果您的 dll 已经具有强名称(您可以从 dll 属性中检查它),您不需要执行这些步骤。您可以按照此代码直接将dll注册到GAC中,

    gacutil -i System.Data.SQLite.dll 
    

    希望对你有用。

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 2012-08-04
      • 2012-04-06
      • 1970-01-01
      • 2022-08-04
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多