Telegram.Bot SendLocationAsyn c возвращает «Входная строка была не в правильном формате» только при запуске в качестве службы - PullRequest
0 голосов
/ 16 апреля 2020

Я использую C#. Net Основное консольное приложение в качестве службы (с использованием Topshelf), и все в порядке, кроме Telegram.Bot SendLocationAsyn c, который возвращает ошибку: «Входная строка была в неправильном формате "

В режиме отладки работает нормально, также как и приложение Release Console. Другие сообщения Telegram работают на 100%. Это определенно только тогда, когда я запускаю приложение как сервис.

Любые идеи приветствуются?

Некоторые примеры кода используются:

        string locString = "-25.2567752,28.7920051";
        try
        {
            string[] cam_loc = locString.Split(",");
            double Lat = Convert.ToDouble(cam_loc[0]);
            double Long = Convert.ToDouble(cam_loc[1]);
            var Result1 = await Bot.SendLocationAsync(chatId: -625759052, latitude: (float)Lat, longitude: (float)Long);
        }
        catch (Exception ex)
        {
            Log.Error("Error Location Send: " + ex.Message);
        }

1 Ответ

0 голосов
/ 26 апреля 2020

Обнаружена проблема: информация о культуре, которая не была правильно проанализирована

, исправили следующие проблемы:

double.TryParse (cam_loc [0], NumberStyles.Number, CultureInfo.InvariantCulture, Out Lat _)

if (double.TryParse(cam_loc[0], NumberStyles.Number, CultureInfo.InvariantCulture, out 
    Lat_) && double.TryParse(cam_loc[1], NumberStyles.Number, 
    CultureInfo.InvariantCulture, out Long_))
{
    Log.Debug("Lat/Long values: " + Lat_.ToString() + " / " + Long_.ToString());
    try
    {
        var Result1 = await Bot.SendLocationAsync(chatId: vp.cliGroup, latitude: 
    (float)Lat_, longitude: (float)Long_);
    }
    catch (Exception ex)
    {
        Log.Error("Error Location Send: " + ex.Message);
    }
}
else
    Log.Debug("Lat/Long (err) values: " + Lat_.ToString() + " / " + Long_.ToString());
...