WebService получает десятичное значение с помощью «,» или «.» - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть веб-сервис .Net с веб-методом, который получает параметр типа Decimal.Это работает, только если вызывающий веб-сервис использует '.'в качестве разделителя.

Я хочу иметь возможность получать это значение либо через запятую, либо через точку, из-за "мультикультурного" характера системы моей компании.

Я пыталсясоздайте пользовательское SoapExtension, чтобы прочитать необработанный отправленный XML, и замените «,» на «.».К сожалению, я мог читать сырой XML, но не мог изменить его.

Есть ли более простой способ?

1 Ответ

1 голос
/ 30 ноября 2011

Если у вас есть несколько культур, с которыми вы работаете, либо добавьте эту культуру в заголовок запроса, либо как свойство , тогда в C # вы можете легко обрабатывать значения Dates и Numeric правильно, позволяя действие, которое обрабатывает те значения, которые относятся к другой культуре, как работающий сервер.

или, просто попросите их отправить вас в вашем уникальном формате , добавьте этот формат в раздел заголовка вашего метода, чтобы его можно было добавить к 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
     }
}
...