我的代码是
#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文件。
答案 0 :(得分:2)
这几乎可以肯定是因为您的本地计算机处于一种文化,其中小数点分隔符是逗号而不是句点,因此“一个半”将是“1,5”而不是“1.5”。大概你的服务器不是在这样的文化中。
你不应该做所有这些替换 - 将值解析为字符串确实不是一个好主意。我强烈怀疑铸造会起作用(虽然我们很难确定,因为我们不知道item
是什么):
dd.CPMUSD = (double) item["CPM?"];
等。尽可能避免字符串转换 - 如果有进行字符串转换,请尽量避免手动替换字符串的位。因此,如果确实必须使用字符串解析,请使用类似:
的内容dd.CPMUSD = double.Parse(item["CPM?"].ToString(), CultureInfo.InvariantCulture);
不变文化总是使用句点作为小数点分隔符,听起来你的输入也是如此。