iis web服务或者什么,改变方法结果

时间:2016-03-02 13:21:07

标签: c# asp.net web-services iis windows-server-2012

我在iis上有一个网络服务。 service必须返回34.56字符串值。因为在我的本地服务中返回此值,但是当我在iis服务器上尝试此方法时,methot返回34560000。 这个问题的原因是什么?

 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 个答案:

答案 0 :(得分:1)

Convert.ToDouble使用当前的线程文化。 您可能在系统上使用不同的区域设置。

解决方案是通过调用以Convert.ToDouble为参数的IFormatProvider的重载来使用适当的文化:

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