簡體   English   中英

.net 2.0客戶端發布到.net 4.0 WCF Restful Service

[英].net 2.0 client POSTing to .net 4.0 WCF Restful Service

我有一個使用以下端點運行的.net 4.0 WCF服務:

[OperationContract]
    [WebInvoke(Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "UploadReport")]
    bool UploadReport(Report report);

我的客戶端是.net 2.0,因此無法在我的對象上使用[DataContract]。 我正在使用Json.net序列化我的數據,然后將其發送到服務。

string json = JsonConvert.SerializeObject(report);
        WebRequest request = HttpWebRequest.Create("http://localhost:51605/QBDHandoffService.svc/UploadReport");
        request.Method = "POST";
        request.ContentType = "application/json";

        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            streamWriter.Write(json);
            streamWriter.Close();
        }
        var response = (HttpWebResponse)request.GetResponse();

呼叫成功到達服務,但“報告”始終為空。 我懷疑存在序列化問題,因為我無法在.net 2.0端的對象上粘貼[DataContract],但並不確定。 當我發送JSON時,JSON看起來不錯,這里缺少什么嗎? 我該怎么做? 謝謝!

發現問題在於JSON.net以WCF不喜歡的方式序列化DateTime。 要修復它,我使用了JsonSerializerSettings:

JsonSerializerSettings dateFormatSettings = new JsonSerializerSettings()
{
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};
string json = JsonConvert.SerializeObject(report, dateFormatSettings);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM