2016-03-02 41 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