我有 WCF REST 服务,其中包含以下代码
var geo = DbGeography.PointFromText(string.Format("POINT({0} {1})", longitude, latitude), DbGeography.DefaultCoordinateSystemId);
单元测试工作正常,但是当我从客户端或 HTTP 调试器调用此代码提供任何纬度和经度值除零时,它会失败并出现异常:
"24141: A number is expected at position X of the input. The input has ,XXXXXX."
at Microsoft.SqlServer.Types.WellKnownTextReader.RecognizeDouble()
at Microsoft.SqlServer.Types.WellKnownTextReader.ParsePointText(Boolean parseParentheses)
at Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType type)
at Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType type, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeography.ParseText(OpenGisType type, SqlChars taggedText, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeography.GeographyFromText(OpenGisType type, SqlChars taggedText, Int32 srid)
at Microsoft.SqlServer.Types.SqlGeography.STPointFromText(SqlChars pointTaggedText, Int32 srid)
纬度和经度例如
lat:37.58336895 long:-122.40549454
lat:37.38931302 long:-122.16207476
我使用从 SQLServer 安装目录和 SqlGeography.Point 引用的 Microsoft.SqlServer.Types 来处理代码端的部分数据。现在我想直接使用 EF 5 功能而不使用对 Microsoft.SqlServer.Types 的引用。无论有没有这个参考,它都会失败。
知道有什么问题吗?
已安装 .NET 4.5,SQL Server 版本为 Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (Intel X86) Sep 22 2011 00:28:06 版权所有 (c) 1988-2008 Microsoft Corporation Standard Edition on Windows NT 6.1(Build 7601 : 服务包 1)