2011-11-30 81 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 
    } 
}