要使我的SQL Server CE在我的Web主机上运行,​​需要采取哪些步骤

时间:2012-03-08 22:31:20

标签: sql-server-ce-4

编辑:我的问题归结为,我需要采取哪些步骤来构建使用中等信任的SQL Server CE的Web应用程序?

我在发布之前已将我的桌面版本复制到我的bin目录中,但我确信还有更多步骤要采取,因为这不起作用。

错误:在AD​​O.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

1 个答案:

答案 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