我们托管了一个网站,在本地浏览时可以正常加载,但如果从外部浏览,则会出现
Conversion from string "1/15/2010 8:46:01 AM" to type 'Date' is not valid.
我应该在服务器上做哪些更改来修复这个问题?在服务器上浏览网站时,网站可以正常工作,尽管我以不同于 IIS 中的用户身份登录到服务器。
任何想法这实际上现在都开始引起头疼了。
答案1
这可能与您在转换时使用的区域设置有关。也许外部使用的是英国格式,但内部使用的是美国格式。确保在将字符串转换为日期时指定您期望的确切格式。
答案2
我想看看给你带来麻烦的代码,但“1/15/2010 8:46:01 AM”在 en-US 编码中是有效的日期。请确保您使用的是 en-US 文化;不要根据您用于开发/测试的机器来假设它。此外,如果 DateTime 字符串基于输入,请考虑用户可以覆盖当前文化通过控制面板。
这是一个来自 MSDN 的示例:
string dateString;
CultureInfo culture;
DateTimeStyles styles;
DateTime dateResult;
// Parse a date and time with no styles.
dateString = "03/01/2009 10:00 AM";
culture = CultureInfo.CreateSpecificCulture("en-US");
styles = DateTimeStyles.None;
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
Console.WriteLine("{0} converted to {1} {2}.",
dateString, dateResult, dateResult.Kind);
else
Console.WriteLine("Unable to convert {0} to a date and time.",
dateString);
答案3
答案4
无论是否有源,如果是 ASP.NET 应用程序,你可以将 web.config 中的文化更改为正确的文化 - 请参阅这个问题和对我的回答的评论。
<system.web>
<globalization culture="en-US" uiCulture="en-US" />
<system.web />
由于操作系统设置是针对每个用户的,您在尝试使用操作系统控制面板更改它时会遇到一些问题 - 因此尝试在上述应用程序中更改它通常更容易、更强大。