部署到 Azure 后出错:"The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect."
Error after deploy to Azure: "The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect."
我正在使用 Visual Studio 2019 在 .NET Core 3.1 中开发应用程序,在我使用 Windows 10 Pro 的本地计算机上一切正常。但部署到 Azure 后出现此问题:
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 9 ("@p8"): The supplied value is not a valid instance of data type geography. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision
将 Post 添加到数据库时发生此错误。 Post 具有 属性 类型 NetTopologySuite.Geometries.Point
并且设置如下:
location = new Point(longitude, latitude) { SRID = 4326 };
其中经度和纬度是双倍的。
当我将位置设置为 null 时,不会出现错误。
我尝试使用较低的精度,例如点之前的 2 位数字和点之后的 6 位数字 - 这仍然会导致错误。
我用的是Entity Framework核心。它生成的数据库列为 Location (geography, null)
.
编辑:
我正在将纬度和经度字符串转换为双精度字符串:Convert.ToDouble(longitude.Replace(".", ","))
。我删除了 .Replace(".", ",")
,现在它可以在 Azure 上运行,但在本地环境中出现同样的错误。
我在两个数据库上都有 ID 为 4326 的空间。
最后我改了:
Convert.ToDouble(longitude.Replace(".", ","))
到
Convert.ToDouble(longitude, CultureInfo.InvariantCulture)
现在它适用于本地和 Azure。
受此启发的解决方案:string to double issue, dot is removed
我正在使用 Visual Studio 2019 在 .NET Core 3.1 中开发应用程序,在我使用 Windows 10 Pro 的本地计算机上一切正常。但部署到 Azure 后出现此问题:
The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 9 ("@p8"): The supplied value is not a valid instance of data type geography. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision
将 Post 添加到数据库时发生此错误。 Post 具有 属性 类型 NetTopologySuite.Geometries.Point
并且设置如下:
location = new Point(longitude, latitude) { SRID = 4326 };
其中经度和纬度是双倍的。
当我将位置设置为 null 时,不会出现错误。 我尝试使用较低的精度,例如点之前的 2 位数字和点之后的 6 位数字 - 这仍然会导致错误。
我用的是Entity Framework核心。它生成的数据库列为 Location (geography, null)
.
编辑:
我正在将纬度和经度字符串转换为双精度字符串:Convert.ToDouble(longitude.Replace(".", ","))
。我删除了 .Replace(".", ",")
,现在它可以在 Azure 上运行,但在本地环境中出现同样的错误。
我在两个数据库上都有 ID 为 4326 的空间。
最后我改了:
Convert.ToDouble(longitude.Replace(".", ","))
到
Convert.ToDouble(longitude, CultureInfo.InvariantCulture)
现在它适用于本地和 Azure。
受此启发的解决方案:string to double issue, dot is removed