使用 ErikEJ 的 SQL CE Membership 提供程序时出现奇怪的错误

Posted

技术标签:

【中文标题】使用 ErikEJ 的 SQL CE Membership 提供程序时出现奇怪的错误【英文标题】:Strange error in using ErikEJ's SQL CE Membership provider 【发布时间】:2011-11-24 20:28:27 【问题描述】:

我一直在尝试实现 ErikEJ 的精彩 SqlCe 4.0 Membership Provider,但我遇到了麻烦。我通过 EJ 先生提供的文档让它工作。但是……

我想将源抽象为外部 DAL。但我在到达那里时遇到了问题。我遇到的第一个问题是尝试通过 .csproj 文件而不是 web.config 添加对 SqlCe 的引用。 (我需要这样做,以便我可以在我的 DAL 项目中添加相同的引用)(我还需要能够将本地复制设置为 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>

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

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

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

当我提到 KB article 时,它说:

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

是的,这就是我的问题。为什么说3.5?我添加了对 Eric 提供程序设计使用的 4.0 dll 的引用。

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

附言我还想知道在 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 和 website bin 并在 CSproj 中直接引用它们,我仍然遇到同样的问题。

【问题讨论】:

【参考方案1】:

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

【讨论】:

嗨,Erik,我点击了您的链接,并且成功了。看起来我基本上需要 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private 文件夹中的 myapp\bin\x86 和 myapp\bin\amd64 文件夹。我发布了一个新问题,因为我想知道添加 web.config 和 Csproj 之间的区别。帖子是***.com/questions/8268679/…,谢谢! 不是你说的那个dll版本:web.config里的4.0.0.0和4.0.0.1(根据你自己截图)

以上是关于使用 ErikEJ 的 SQL CE Membership 提供程序时出现奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中使用 SQL 实现以下任务

Visual Studio 2017:SQLite/SQL Server Compact ToolBox使用

使用 LINQ To SQL / SQL CE 创建表

在Visual Studio 2013里使用 Microsoft SQL Server Compact Edition

SQL 按问题分组 SQL Server 2005 CE

使用 SQL Server Express 和 SQL Server CE