输入字符串的格式不正确。 FTP中的错误但在localhost代码中是有效的

时间:2012-12-31 09:16:49

标签: .net

我的代码是

   #region LikeExceli
   DynamicData dd = new DynamicData();
   dd.GerceklesenIMP = Convert.ToInt32(item["Impressions?"].ToString().Replace(",", ""));
   dd.GerceklesenClick = Convert.ToInt32(item["Clicks?"].ToString().Replace(",", ""));
   dd.CampaignName = item["Campaign?"].ToString();
   dd.AdvertName = item["Advert Name"].ToString();
   dd.GercekHarcamaUSD = fr.ConvertMoney(item["Spent?"].ToString());
   dd.Likes = Convert.ToInt32(item["Page likes?"].ToString().Replace(",", ""));
   dd.FK_Campaign = kampanyaid;
   dd.CPMUSD = Convert.ToDouble(item["CPM?"].ToString().Replace(".", ","));
   dd.CPCUSD = Convert.ToDouble(item["CPC?"].ToString().Replace(".", ","));
   dd.CreateDate = DateTime.Now;
   #endregion

我的错误是:Input string was not in a correct format.

但我的代码在localhost中工作没有任何问题。当我上传服务器时,我收到了这个错误。

注意:我正在导入一个excel文件。

1 个答案:

答案 0 :(得分:2)

这几乎可以肯定是因为您的本地计算机处于一种文化,其中小数点分隔符是逗号而不是句点,因此“一个半”将是“1,5”而不是“1.5”。大概你的服务器不是在这样的文化中。

你不应该做所有这些替换 - 将值解析为字符串确实不是一个好主意。我强烈怀疑铸造会起作用(虽然我们很难确定,因为我们不知道item是什么):

dd.CPMUSD = (double) item["CPM?"];

等。尽可能避免字符串转换 - 如果进行字符串转换,请尽量避免手动替换字符串的位。因此,如果确实必须使用字符串解析,请使用类似:

的内容
dd.CPMUSD = double.Parse(item["CPM?"].ToString(), CultureInfo.InvariantCulture);

不变文化总是使用句点作为小数点分隔符,听起来你的输入也是如此。