1

我在安装了 Windows Server Web (SP2) 的测试服务器上运行了一个测试网站。我刚刚在上面安装了.NET4.5。在网站(来自模板的简单 ASP.NET 网络表单)中,我使用了 Entity Framework 5 Spatial 类型,非常简单的代码仅用于测试,在我的本地开发机器上运行良好:

var conn = new DbEntities();
var geo = conn.tbl_SpatialData.First().GeoInfo;
var geom = DbGeometry.FromGml(geo.AsGml());
litText.Text = geom.AsGml();

但是在服务器上它给了我这个错误:

空间类型和函数不适用于此提供程序,因为找不到程序集“Microsoft.SqlServer.Types”版本 10 或更高版本。

它要连接的 sql 数据库位于不同的服务器上,并且是 SQL Server 2008 -> 我正在从本地开发机器连接到同一个数据库。

我已经尝试在我的本地计算机上搜索 dll,并将其添加到网站的 bin 文件夹中,但是它给了我一个新的错误,请求另一个 dll。我想像在我的开发机器上一样全局安装这些 dll。我缺少什么或者我应该在服务器上安装什么?

提前致谢!

4

2 回答 2

1

该程序集及其依赖项是 SQL Server 管理对象的一部分。此功能必须安装在服务器上。它应该是 SQL Server 的客户端工具或客户端工具 SDK 的一部分。

于 2012-09-25T10:11:59.523 回答
-1

当它出现在已发布的服务器中时,这可能会对您有所帮助

http://blogs.msdn.com/b/adonet/archive/2013/12/09/microsoft-sqlserver-types-nuget-package-spatial-on-azure.aspx

如果您可以控制服务器,则只需安装 CLR Types for SQL Server。可以在此处下载CLR 类型的 SQL Server 2012 SP1 版本。SQLSysClrTypes.msi是您想要的安装程序,并且有 x86(32 位)和 x64(64 位)版本,具体取决于您要部署到的机器的体系结构。

但是,在目标机器上安装额外的软件并不总是一种选择——尤其是当您要部署到不属于您的机器(例如 Windows Azure 网站)时。幸运的是,所需的程序集可以与您的应用程序一起部署。

步骤 1:安装Microsoft.SqlServer.Types NuGet 包

PM> Install-Package Microsoft.SqlServer.Types

第 2 步:确保将适当版本的本机 SqlServerSpatial110.dll程序集复制到输出目录并与您的应用程序一起部署。

安装包时将在 Visual Studio 中打开的 ReadMe.txt 文件中包含有关如何执行此操作的步骤。

于 2015-08-05T10:21:47.783 回答