2016-03-02 79 views
0

我有一個關於iis的web服務。服務必須返回像34.56字符串值。因爲在我的本地服務中返回這個值,但是當我在iis服務器上嘗試這種方法時,methot返回34560000. 這個問題的原因是什麼?iis web服務或什麼,更改方法結果

public string GetTotal(string a, string b) 
    { 
     double total= 0; 
     List<BorcLite> bList = GetTotalList(a, b); 

     if (bList.Count == 0) 
      return total.ToString(); 

     if (bList[0].resultCode != "0") 
      return bList[0].resultCode; 

     foreach (BorcLite record in bList) 
     { 
      total+= Convert.ToDouble(record.totalBill); 
     } 
     return total.ToString(); 
    } 
+1

可能不同的區域,和'Convert.ToDouble'使用當前線程培養。嘗試使用'Convert.ToDouble(s,CultureInfo.InvariantCulture)'或任何你需要的文化 –

+1

耶看起來是一個語言環境問題 –

+0

非常感謝你Zdeslav Vojkovic :)它的工作原理。 – Kerem

回答

1

Convert.ToDouble使用當前線程文化。 您可能在您的系統上使用不同的語言環境。

解決辦法是通過調用Convert.ToDouble超載這需要IFormatProvider作爲參數使用適當的培養:在2臺機器所使用

string s = "34,56000"; 
double d = Convert.ToDouble(s); // my default US -> 3456000 
d = Convert.ToDouble(s, CultureInfo.InvariantCulture); // -> 3456000 
d = Convert.ToDouble(s, CultureInfo.GetCultureInfo("en-US")); // -> 3456000 
d = Convert.ToDouble(s, CultureInfo.GetCultureInfo("de-DE")); // -> 34.56