-3

我的代码是

   #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 文件。

4

1 回答 1

2

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

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

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

等。尽可能避免字符串转换 - 如果您必须进行字符串转换,请尽量避免手动替换字符串的位。因此,如果您真的必须使用字符串解析,请使用以下内容:

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

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

于 2012-12-31T09:22:48.017 回答