.net 2.0客户端发布到.net 4.0 WCF Restful服务

本文关键字:net 服务 WCF Restful 客户端 | 更新日期: 2023-09-27 18:23:38

我有一个.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();

调用成功到达服务,但"report"始终为null。我怀疑是序列化问题,因为我不能在.net 2.0端的对象上粘贴[DataContract],但我不完全确定。当我发送JSON时,它看起来很好,是不是我缺少了什么?我怎样才能做到这一点?谢谢

.net 2.0客户端发布到.net 4.0 WCF Restful服务

发现问题是JSON.net以WCF不喜欢的方式序列化DateTime。为了修复它,我使用了JsonSerializerSettings:

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