使用ErikEJ的SQL CE成员资格提供程序时出现奇怪的错误

时间:2011-11-24 20:28:28

标签: visual-studio visual-studio-2010 sql-server-ce

我一直在努力实现ErikEJ的精彩SqlCe 4.0 Membership Provider,但我遇到了麻烦。我通过EJ提供的文档得到了它。但....

我想将源抽象为外部DAL。但是我遇到了问题。我得到的第一个问题是尝试通过.csproj文件而不是web.config添加对SqlCe的引用。 (我需要这样做,所以我可以在我的DAL项目中添加相同的引用)(我还需要能够将copy local设置为true,因此在csproj引用中需要它)。所以我这样做....

<assemblies>
   <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <!--<add assembly="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>-->
</assemblies>

然后将其添加到我的项目中......

SqlReference

但是当我浏览网站时,我收到此错误消息:

  

无法加载SQL Server Compact的本机组件   对应于版本8482的ADO.NET提供程序。安装   正确版本的SQL Server Compact。请参阅知识库文章974247   更多细节。

当我提到KB article时,它说:

  

FIX:运行SQL Server Compact时收到错误消息   在x64计算机上安装32位版本的SQL Server Compact Edition 3.5 Service Pack 2后,基于3.5的应用程序

是的,那是什么让我失望。为什么谈论3.5?我添加了对Eric的提供商设计使用的4.0 dll的引用。

我真的希望有人可以提供帮助。也许Erik会读这篇文章: - )

P.S。我也想知道在web.config中添加引用和通过csproj添加引用之间的区别是什么。我认为这是因为web.config在GAC中查找。但是当我尝试在visual studio中添加引用时(对于csproj)我看不到添加System.Data.SqlServerCe的选项了!

我还可以说当我直接从

复制dll时
C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private

进入我的DAL bin和网站bin并直接在CSproj中引用它们我仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:1)

您正在使用私有程序集版本(4.0.0.1) - 听起来您已部署的站点中缺少必需的非托管DLL文件。您可以查看文件浏览器并显示您看到的内容。 另外,请参阅此SO答案:Can't get sql server compact 3.5 / 4 to work with ASP .NET MVC 2