2015-11-19 69 views
2

我遇到了RestSharp庫的問題。默認情況下,它使用dd/MM/yyyy HH:mm:ss格式序列化DateTime對象。這不適合我的WCF服務,似乎只接受yyyy-MM-ddTHH:mm:ss,所以我試圖用request.DateFormat = "yyyy-MM-ddTHH:mm:ss改變請求的序列化。RestSharp - XmlSerializer不使用DateFormat屬性

即使設置正確,該屬性似乎對序列化沒有影響。至少在使用默認RestSharp.Serializers.XmlSerializer時。如果我嘗試使用DotNetXmlSerializer,DateFormat正在工作,但是然後序列化程序沒有包含我的XMLNS鏈接,並將版本&編碼行添加到xml輸出,其中一個或兩個都與WCF服務不兼容。

有沒有人有任何建議我做錯了XmlSerializer

這裏是有關的代碼塊:

var req = new RestRequest(endpoint, Method.POST); 
req.RequestFormat = DataFormat.Xml; 
//req.XmlSerializer = new DotNetXmlSerializer(); 
req.XmlSerializer = new XmlSerializer(); 
req.DateFormat = DATE_FORMAT; 
req.AddBody(model, XMLNS); 

private const string DATE_FORMAT = "yyyy-MM-ddTHH:mm:ss"XMLNS是在WCF請求中使用的URL(從端點/幫助文檔拍攝)。

回答

1

看起來RestRequest.DateFormat僅用於當反序列化

/// <summary> 
    /// Used by the default deserializers to explicitly set which date format string to use when parsing dates. 
    /// </summary> 
    public string DateFormat { get; set; } 

序列化,你需要明確設置它的serializer

req.XmlSerializer = new XmlSerializer { DateFormat = DATE_FORMAT }; 

需要注意的是,對於DotNetXmlSerializer,底層System.Xml.Serialization.XmlSerializer根據this answer,不支持自定義日期時間格式。

相關問題