Вы можете попробовать что-то вроде этого
this.driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
this.driver.manage().timeouts().setScriptTimeout(60, TimeUnit.SECONDS);
Возможное объяснение:
В основном проблемой было значение sPositiveSign под HKEY_CURRENT_USER\Control Panel\International, устанавливаемым на 0, что означает, что положительный знак '0'. Таким образом, в то время как парсинг "положительного знака 0" отключается, и затем остальная часть строки ("") анализируется как число, которое не работает, конечно. Это также объясняет, почему международный Синтаксический анализ ("00") не был проблемой. Хотя Вы не можете установить положительный знак на '0' через Панель управления, все еще возможно сделать это через реестр, вызывая проблемы. Никакая идея, как компьютер пользователя в сообщении закончился с этой неправильной установкой...
Еще лучше, что является выводом этого на Вашей машине:
Console.WriteLine(System.Globalization.NumberFormatInfo.GetInstance(null).PositiveSign);
Я готов поставить Ваш печать a 0
... когда мой распечатывает a +
знак.
Я предлагаю проверить Ваш Control Panel > Regional and Language Options
настройки... если они кажутся нормальными, попытайтесь изменить их на что-то еще, чем назад на любой язык, который Вы используете (я принимаю английский язык).
Я думаю, что это обычно не полагало, что хорошая идея звонить Преобразовывает. ToInt32 для значения, читающего из базы данных, что относительно значения, является пустым, что относительно значения не может быть проанализирован. У Вас есть какой-либо код обработки исключений здесь.
HTH.
Править:
Ответ @Mike заставил меня думать, что это - чрезвычайно нечетное поведение, и простой поиск Google привел к этому результату: международный Синтаксический анализ странное поведение
Пустая строка также вызвала бы эту проблему.
Вы могли проверить на dbnull перед парсингом, также хорошо проверить проанализированные данные.
Вы могли использовать значение по умолчанию и TryParse..
int i = -1;
if(!int.TryParse(dr["MyColumn"] as string, out i))
//Uh Oh!
Править:
Я отправил это как комментарий в ответе @Chris', но если sql тип данных является интервалом затем, почему не только используют метод GetInt32 на DataReater вместо того, чтобы получить его как строку и руководство, анализирующее его?
Вы уверены, что это "0" и не "пустое"? Какое исключение Вы получаете?
Править:
Только из любопытства, если это действительно дает сбой на международном Синтаксическом анализе ("0"), может Вы пробовать международный Синтаксический анализ ("0", CultureInfo. InvariantCulture);?
Иначе отправьте свой запрос. Какие-либо соединения?
Это - выход из левой стороны поля, но проверьте свои настройки локализации. У меня было много "входных строк, не был в правильном формате", когда я переместил веб-сайт в канадский сервер. Проблема была в DateTime. Метод синтаксического анализа, и был исправлен путем установки культуры на "en-США".
Да, Ваша ситуация отличается — но эй, Вы никогда не знаете.
необходимо проверить доктора ["Имя поля"]! = DBNull. Значение и Вы должны использовать TryParse, если это проходит тест DBNull...
if ( dr["FieldName"] != DBNull.Value )
{
int val = 0;
if ( int.TryParse( dr["FieldName"], out val ) )
{
i = val;
}
else
{
i = 0; // or some default value
}
}
Вы проверяете на пустой указатель?
if(!dr.IsNull("FieldName")){
int i = Convert.ToInt32(dr["FieldName"]))
}
Я видел, что эта проблема неожиданно возникает с.NET Двойной класс, анализирующий от строки "0" также.
Вот действительно дурацкая часть: можно закончить проблему при помощи другой учетной записи пользователя для запущения программы, и иногда если Вы уничтожите и воссоздадите текущую учетную запись пользователя на машине, то она будет хорошо работать.
Я должен все же разыскать это, но Вы могли бы закончить его этот путь, по крайней мере.