-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.

しかし、私のコードはローカルホストで問題なく機能しています。サーバーをアップロードすると、このエラーが発生しました。

注:Excelファイルをインポートしています。

4

1 に答える 1

2

これはほぼ間違いなく、ローカルマシンが小数点記号がピリオドではなくコンマである文化にあるため、「1.5」は「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 に答える