2013-08-21 3 views
0

Я немного зациклен на ошибке, которую я получаю при перемещении моего сайта с локального веб-сервера. На локальном я не получаю ошибки с этим кодом, на веб-сервере я получаю «Указанный ролик недействителен».Заданное значение Cast Invalid with DataRow

Строка кода метания ошибки является:

DateTime expirationDate = (DateTime)dtUser.Rows[0]["PasswordExpirationDate"]; 

Я думал, что это было правильным способом получить DateTime из базы данных и использовать его в C#. Я проверил значение не null, в настоящее время он выдается как 2013-11-18 16: 41: 41.937

Я уже пытался переключиться на Convert.ToDateTime (dtUser.Rows [0] ["PasswordExpirationDate"]) и это тоже не удается, с добавлением .ToString().

Я не могу найти причину, по которой веб-сервер выдает эту ошибку, а локальный - нет. У кого-нибудь есть лучший способ получить эту ценность или какие-либо идеи относительно того, что может быть проблемой с веб-сервером?

+2

Так ли это строка (varchar) или DateTime в базе данных? Как вы его заполняете, с помощью DataAdapter или вручную? Является ли схема базы данных одинаковой или различной? –

+0

Это DateTime в базе данных. Он заполнен SqlDataAdapter. Эти сайты используют одну и ту же базу данных, поэтому схема одинакова. – CoreyT

+0

Что означает «это выходит как 2013-11-18 16: 41: 41.937». Это строка в 'DataTable'? Как выглядит sql-запрос, действительно ли вы выбираете поле datetime без преобразования в varchar? –

ответ

1

Пожалуйста, используйте культуру, это поможет вам.

string result = Convert.ToDateTime(dtUser.Rows[0["PasswordExpirationDate"].toString(), 
System.Globalization.CultureInfo.InvariantCulture); 
+1

Если это значение «datetime» в базе данных, преобразование его в строки и из строк с большей вероятностью приведет к ошибкам, чем к их решению. –

+0

Это не сработает, мне нужно, чтобы это DateTime, чтобы использовать для получения временного промежутка времени и так далее. – CoreyT

+0

Я не преобразовываю его в строку. Если я попробую просто использовать dtUser.Rows [0] ["PasswordExpirationDate"], я получаю сообщение о том, что мне не хватает роли. Поэтому я начал использовать значение, которое работает только локально. Я только пытался преобразовать его в строку и обратно, чтобы исправить ошибку, которая не имела никакого эффекта. – CoreyT