2011-11-30 19 views
0

我有一个.net web服务,它的webmethod接收一个Decimal类型参数。它只适用于Web服务调用者使用'。'的情况。作为分隔符。WebService通过“,”或“。”接收小数值。

由于公司系统的“多文化”性质,我希望能够用逗号或点分隔符来接收此值。

我试着创建一个自定义的SoapExtension来读取已发送的原始XML,并用“。”替换“,”。不幸的是,我可以读取原始XML,但无法改变它。

有没有更简单的方法?

+0

的时候,我只想定义一个附加其他格式的方法的开头部分,因此它可以被附加到WSDL “”作为*有效的小数点分隔符。这与将ISO8601(或其子集)定义为有效日期没有什么不同。美丽的文化特定格式应该发生在数据模型之外,例如为用户提供格式正确的输入框的客户端。 – 2011-11-30 19:34:24

+0

如果不能使用“双分离器”解决方案,可以将小数点分隔符更改为“,”,因为这是我国(巴西)的模式。有没有办法改变它?我已经在web.config上使用过全球化(pt-BR),但没有成功。 –

回答

1

如果你有一个和你一起工作的几个文化,无论是这种文化添加到请求头或作为财产,然后在C#中,你可以很容易地把日期和数字通过让可治疗行动值的正确方法这些值与运行的服务器在不同的文化中。

,或者简单的要求他们向您发送您独特的格式,消耗

/// <summary> 
/// Updates client birthdate 
/// </summary> 
/// <param name="clientId">Client identification number</param> 
/// <param name="birthdate">Birth date to update (dd-mm-yyyy)</param> 
/// <returns>nothing</returns> 
public void UpdateBirthdate(Decimal clientId, String birthdate) 
{ 
    // if you want to parse the date prior to use it 
    DateTime dt = DateTime.UtcNow; 
    if (DateTime.TryParseExact(birthdate, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None, out dt)) 
    { 
     // continue your method 
    } 
}