C# Webservice忽略应用程序的cultureinfo设置

C# Webservice忽略应用程序的cultureinfo设置,c#,jquery,asp.net,web-services,C#,Jquery,Asp.net,Web Services,我有一个Web应用程序,其中包含一些发布到webservice方法的表单。json post是通过jquery$.ajax方法完成的。虽然my cultureinfo设置为nl nl,但我的webmethod在发布表单的值时会抛出错误“10,00不是十进制的有效值”。同样的情况也适用于带有荷兰符号的日期时间 .net序列化程序似乎忽略了全局区域性设置。当我将“10,00”更改为“10.00”时,webmethod将接受帖子 我们已经为这个问题挣扎了一段时间,在SO和Google上找不到任何有用的

我有一个Web应用程序,其中包含一些发布到webservice方法的表单。json post是通过jquery$.ajax方法完成的。虽然my cultureinfo设置为nl nl,但我的webmethod在发布表单的值时会抛出错误“10,00不是十进制的有效值”。同样的情况也适用于带有荷兰符号的日期时间

.net序列化程序似乎忽略了全局区域性设置。当我将“10,00”更改为“10.00”时,webmethod将接受帖子


我们已经为这个问题挣扎了一段时间,在SO和Google上找不到任何有用的东西。所以在这件事上任何帮助都是非常好的

基本上,这是由于代码的和平:

// No exponent, may or may not have a decimal (if it doesn't it couldn't be parsed into Int32/64)
            decimal dec;
            if (decimal.TryParse(input, NumberStyles.Number, CultureInfo.InvariantCulture, out dec)) {
                // NumberStyles.Number: AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign,
                //                      AllowTrailingSign, AllowDecimalPoint, AllowThousands
                return dec;
            }
参考:


因此,唯一的选择是用替换。向英国霸权投降

我认为这不是“屈服于英国霸权”,而是“在任何地方都使用不变的文化,除了边缘”。日期应始终转换为GMT进行处理和存储,数字和货币应始终采用区域性不变的格式。文化特异性在我看来更像是一个UI/表示问题。@johnblesoe那么优势在哪里呢?TryParse“10,00”当您的文化是荷兰语(在本例中)时,应将10.00解析为双精度。边缘是用户界面。您正在处理应用程序内部通信($.ajax到web服务),根据我的经验,应该使用不变的文化。