WebService使用“,”或“。”接收十进制值。

时间:2011-11-30 19:31:44

标签: c# web-services c#-4.0 soap globalization

我有一个带有webmethod的.Net webservice,它接收一个Decimal类型参数。它仅在web服务调用者使用'。'时有效。作为分隔符。

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

我尝试创建自定义SoapExtension以读取已发送的原始XML,并将“,”替换为“。”。不幸的是,我可以阅读原始XML,但不能改变它。

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您使用多种文化,将该文化添加到请求标头或属性,那么在C#中,您可以通过租用轻松地处理日期和数字值的正确方式将那些在不同文化中的值视为正在运行的服务器的操作。

简单请求他们以您的独特格式发送,将该格式附加到方法的标题部分,以便在使用时将其附加到WSDL

/// <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
     }
}