System.FormatException: Input string was not in a correct format
Не работает проект. На дедике в свободной форме все запускается, а когда пытаюсь запустить на локалке - ничего не работает. В чем может быть проблема? Ошибка:
---> System.FormatException: Input string was not in a correct format.
at void Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
at float float.Parse(string s)
at void PropertySystem.EntraceSystemInit() in C:/server-files/dotnet/resources/empire/scripts/PropertySystem.cs:line 222
at void Main.OnResourceStart() in C:/server-files/dotnet/resources/empire/Main.cs:line 436
--- End of inner exception stack trace ---
at object RuntimeMethodHandle.InvokeMethod(object target, object[] arguments, Signature sig, bool constructor, bool wrapExceptions)
at object System.Reflection.RuntimeMethodInfo.Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)
Код 222-й строки PropertySystem.cs:
if (float.Parse(reader.GetString("sellpoint").Split(",")[0]) != 0)
Код 436 строки main.cs:
PropertySystem.EntraceSystemInit();
HouseSystem.HouseSystemInit();
Infinity.scripts.Custom.RobSystem.InitRobSystem();
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
На дедике и на локалке - разные культуры по умолчанию.
Вы всегда должны явно указывать культуры, на которые рассчитано ваше приложение.
Это можно делать непосредственно в методе - задаём FormatProvider:
float.Parse("5.5", CultureInfo.InvariantCulture)
Или задаём культуру для всего приложения:
CultureInfo.CurrentCulture = new CultureInfo("en-US");
CultureInfo.CurrentUICulture = new CultureInfo("en-US");
Какую именно культуру указать - инвариантную или некую определённюу (ru-RU, fr-FR) - знаете только вы. Или, вернее, автор кода.