编辑:我的问题归结为,我需要采取哪些步骤来构建使用中等信任的SQL Server CE的Web应用程序?
我在发布之前已将我的桌面版本复制到我的bin目录中,但我确信还有更多步骤要采取,因为这不起作用。
错误:在ADO.NET提供程序和SQL Server Compact的本机二进制文件之间检测到可能的文件版本不匹配,这可能导致功能不正确。这可能是由于存在多个不同版本的SQL Server Compact实例,或者是由于与SQL Server Compact二进制文件具有相同名称的错误二进制文件。请安装匹配版本的SQL Server Compact二进制文件。
Web App:使用VS 2010构建的MVC 3
我的开发机器上的一切正常。
阅读this post后,我删除了我的引用并将SqlServerCE.dll和SqlServerCe.Entity.dll复制到我的bin目录。
改变了
的错误无法加载文件或程序集'System.Data.SqlServerCe,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
到现在的那个。
我从桌面文件夹中复制了SqlServerCE.dll,因此我可以在中等信任下运行。
从我的Web.config文件:
` <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
<assemblyIdentity name="System.Data.SqlServerCe"
publicKeyToken="89845dcd8080cc91" culture="neutral"/>
<bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>`
编辑:谢谢大家。
我的包目录中有SqlServerCompact.4.0.8852.1。
我从bin目录中删除了SqlServerCE.dll和SqlServerCe.Entity.dll,因为它们在我的包中。我将Native Binaries复制到我的bin中(它们包含在项目中),但我仍然收到这条消息:
在ADO.NET Provider和。之间检测到可能的文件版本不匹配 SQL Server Compact的本机二进制文件可能导致 功能不正确。这可能是由于存在多个 不同版本的SQL Server Compact实例或由于错误 与SQL Server Compact二进制文件同名的二进制文件。请安装 匹配版本的SQL Server Compact二进制文件。
我无法使用您建议的nuget软件包,因为我有更新版本的Entity Framework并且它已回滚安装。
如果有人可以推荐在共享托管服务器上以中信任方式工作的SQL Server CE设置,我准备重新开始一个新项目。
这是我在创建项目时一直在做的(并且不起作用)。
一个。安装包SqlServerCompact 湾Install-Package System.Web.Providers C。 Install-Package EntityFramework d。 Install-Package EntityFramework.SqlServerCompact
答案 0 :(得分:3)
检查您的packages目录中是否您的SqlCompact是此版本:SqlServerCompact.4.0.8852.1
如果是,您需要复制packages \ SqlServerCompact.4.0.8852.1 \ NativeBinaries中的文件,因为它们不同。
但是这个版本不能在中等信任下运行,因为他们将SqlCompact版本更改为4.0.0.1,并且在.NET 4配置文件中默认只授权4.0.0.0。如果您需要以中等信任度运行的版本,请尝试使用此https://nuget.org/packages/EntityFramework.SqlServerCompact/4.1.8482.2