在IIS上,字符串未被识别为有效的日期时间错误

时间:2012-04-22 18:40:35

标签: c# asp.net visual-studio-2010

问候人们......我开发了一个网络...一切正常,直到部署......我的问题是 - 为什么会出现这个错误?因为如果我在Visual Studio Server上运行Web     一切都很好...但是当我在IIS服务器上部署并运行它时突然出现此错误     出现..为什么是人?真的需要一些帮助......

string tarikh = Convert.ToDateTime(txtTarikh.Text).ToString("yyyy-MM-dd");

该行是导致错误的原因..提前谢谢

6 个答案:

答案 0 :(得分:3)

对于此问题,您必须转到IIS

转到IIS - >选择您的已配置网站 - >单击 .NET全球化

从.NET全球化中,选择文化 UI-文化英语(美国)(en - US)

通过Windows命令提示符运行命令iisreset重新启动IIS

检查申请是否同样存在问题

答案 1 :(得分:2)

可能是服务器端默认文化与您在开发中使用的文化不同。

无论如何,您期望日期是什么格式?您应该使用DateTime.TryParseExact至少使用DateTime.TryParse指定相应的CultureInfo。 (例如,用户的文化。)

同样,我建议您提供适当的CultureInfoToString - 可能CultureInfo.InvariantCulture

答案 2 :(得分:2)

您的开发计算机和Web服务器上有不同的“区域设置”。

您可以尝试使用重载版本Convert.ToDateTime(字符串,IFormatProvider),而不是调用Convert.ToDateTime(字符串),并指定您期望日期的格式。

我们中的一些人认为今天的日期是“2012-04-22”,而其他人声称它是“2012年4月22日”等...

编辑:只需执行以下操作:

var  ci = new CultureInfo("xx-XX");
var dateTime = Convert.ToDateTime(txtTarikh.Text, ci);

其中xx-XX是您要使用的文化代码。在这里查找: http://sharpertutorials.com/list-of-culture-codes/

答案 3 :(得分:1)

因为从txtTarikh.Text获取的日期未被解析为日期。 可能在您的本地计算机上,您的区域设置与您的服务器不同。 添加日志并打印txtTarikh.Text以查看服务器和本地计算机上的返回内容。

答案 4 :(得分:0)

enter image description here

通过在IIS中设置.net全球化设置来解决问题

答案 5 :(得分:0)

<system.web>
    <globalization requestEncoding="utf-8"  responseEncoding="utf-8" fileEncoding="utf-8" culture="en-US" uiCulture="en-US" />
  </system.web>

在web.config中更改这些行,然后再次发布。。它对我有用。