【问题标题】:iis web service or what, change method resultiis web 服务或什么,更改方法结果
【发布时间】:2016-03-02 13:21:06
【问题描述】:

我在 iis 上有一个网络服务。服务必须返回类似 34.56 的字符串值。因为在我的本地服务中返回这个值,但是当我在 iis 服务器上尝试这个方法时返回 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();
    }

【问题讨论】:

  • 两台机器上可能使用不同的语言环境,Convert.ToDouble 使用当前的线程文化。尝试使用Convert.ToDouble(s, CultureInfo.InvariantCulture) 或您需要的任何文化
  • 嗯,似乎是语言环境问题
  • 非常感谢 Zdeslav Vojkovic :) 它有效。

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


【解决方案1】:

Convert.ToDouble 使用当前线程文化。 您可能在系统上使用不同的语言环境。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多