2013-06-18 7 views
2

Я разработал веб-программу в visual studio 2008 и преобразовал ее в 2010 году. В Datagrid у меня есть столбец данных с TimeSpan значением. В 2008 году я дал ему строковый формат 0:hh:mm, и после преобразования я получал FormatException: Input string was not in a correct format. Я исправил строку formattig до 0:hh\:mm, как я нашел в документации Microsoft для .NET 4.0. Когда я запускаю приложение из visual studio, он работает, но когда я его копирую и запускаю из IIS, он все еще дает эту ошибку. В чем может быть проблема?Исключение формата строки TimeSpan

+2

Вы исправились с '0: hh: mm' до' 0: hh: mm'? –

+0

какой пул приложений использует ваш IIS? – aiapatag

+0

@Tim Schmelter Я исправил это до 0: hh \: mm. –

ответ

4

В .NET версии 3.5 и ранее структура TimeSpan не была IFormattable. Использование строки формата, как в string.Format("Ipsum {0:HERE} ipsum", yourTimeSpan), просто игнорирует формат.

Начиная с .NET 4.0, TimeSpan является IFormattable. Из-за этого есть new overload of ToString, и он называется вместо этого.

+0

Я не использую tostring там Я использую свойство DataFormatString для gridview collumn. Также в моем редактировании вопроса я написал, что я изменил на 0: hh \: мм, как описано в вашей ссылке. –

+0

@DovMiller Можно ли увидеть оператор кода _exact_, где вы используете строку формата? Является ли backspace '' \ '' надлежащим образом экранированным? Когда вы запускаете непосредственно из Visual Studio, какую версию .NET вы используете? Какую версию .NET вы используете при работе через IIS? Можно отключить новый символ временного интервала 'IFormattable', см. [' 'Element] (http://msdn.microsoft.com/en-us/library/ee803802.aspx). –

+0

Разметка столбца сетки - это DataFormatString = "{0: hh \: mm}". В Visual Studio 4.0 и в IIS пул приложений - это ASP.NET v4.0. –

Смежные вопросы