来自AppFabric Provider的Sqlite连接

时间:2015-01-21 08:22:11

标签: sqlite gac appfabric

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

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

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

  

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

错误消息中没有更多解释,但如果尝试从服务连接sqlite,它会成功连接。 Sqlite db文件允许每个人阅读。

似乎存在身份验证问题或类似问题。什么可以解决方案?

2 个答案:

答案 0 :(得分: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

     

如果这是一个可重现的错误,那么您应该能够轻松调试   Cache服务器上的DistributedCacheService.exe进程并放入一个   关于PUT方法的断点并逐步通过它看看你是否可以   找到例外。

     

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

答案 1 :(得分:0)

在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 

我希望它会有用。