Ошибка после развертывания в Azure: поток протокола удаленного вызова процедур (RPC) входящего потока табличных данных (TDS) неверен.

Я разрабатываю приложение в .NET Core 3.1 с Visual Studio 2019, и все отлично работает на моем локальном компьютере с 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

Эта ошибка возникает при добавлении сообщения в базу данных. Пост имеет свойство типа NetTopologySuite.Geometries.Point и устанавливается следующим образом: location = new Point(longitude, latitude) { SRID = 4326 }; где долгота и широта удваиваются.

Когда я устанавливаю для местоположения значение null, ошибка не появляется. Я пытался использовать меньшую точность, например, 2 цифры перед точкой и 6 цифр после - это все еще вызывает ошибку.

Я использую Entity Framework Core. Он сгенерировал столбец БД как Location (geography, null).

Изменить: я преобразовываю строки широты и долготы в двойные: Convert.ToDouble(longitude.Replace(".", ",")). Я удалил .Replace(".", ","), и теперь он работает в Azure, но та же ошибка появляется в локальной среде. У меня есть пространственное с идентификатором 4326 на обеих БД.


person Piotrek    schedule 22.06.2020    source источник
comment
Привет, у другого была такая же ошибка и она была устранена. см. ссылку: stackoverflow.com/questions/59493887/ и github.com/dotnet/efcore/issues/19416.   -  person Leon Yue    schedule 23.06.2020
comment
Проблема была в другом. В azure db есть пространственный 4326.   -  person Piotrek    schedule 23.06.2020


Ответы (1)


Наконец я изменил:

Convert.ToDouble(longitude.Replace(".", ","))

to

Convert.ToDouble(longitude, CultureInfo.InvariantCulture)

и теперь он работает как на локальном, так и на Azure.

Решение, вдохновленное этим: строка для двойного выпуска, точка удалена

person Piotrek    schedule 23.06.2020