【问题标题】:Getting null values when sending object parameter as JSON object to WCF service method将对象参数作为 JSON 对象发送到 WCF 服务方法时获取空值
【发布时间】:2012-01-07 22:21:51
【问题描述】:

这是我的服务方法签名:

    [OperationContract]
    [System.ServiceModel.Web.WebInvoke(UriTemplate = "/RegisterUser", Method = "POST")]
    void RegisterNewUser(User user);

此外,Type User 在类上具有 DataContract 属性,在其属性上具有 DataMember 属性

这是我调用服务方法的方式:

 String data = "{\"user\":{\"__type\" : \"User:#PingMe\",\"EmailID\": \"something@something.com\",\"RegistrationID\": \"sdfhjklsdgkdfjgklgdjfklg\"}}";  
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:2443/NotificationService.svc/RegisterUser");
        httpWebRequest.Method = "POST";
        byte[] bytes = Encoding.UTF8.GetBytes(data);
        httpWebRequest.ContentLength = bytes.Length;
        httpWebRequest.ContentType = "text/json; charset=utf-8";
            httpWebRequest.KeepAlive = false;
        Stream requestStream = httpWebRequest.GetRequestStream();
        requestStream.Write(bytes,0,bytes.Length);
        requestStream.Close();


        HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

成功调用服务方法,但服务方法的用户参数user.EmailID和User.RegistrationID总是为'NULL'

知道我在这里缺少什么吗?

我需要将 RequestFormat 属性设置为 WebMessageFormat.JSON 吗?在 OperationContract 属性中?

谢谢

【问题讨论】:

  • 能贴出User类的定义吗?
  • 您是否已将 [DataMember] 属性添加到您的用户属性中?

标签: c# wcf json rest


【解决方案1】:

在您的服务器中增加 MaxpostSize 属性 我对 IIS 了解不多,但我认为它对你有用

 <requestLimits maxAllowedContentLength ="<length>" />

【讨论】:

    【解决方案2】:

    改变这个

    httpWebRequest.ContentType = "text/json; charset=utf-8";
    

    到这里:

    httpWebRequest.ContentType = "application/json; charset=utf-8";
    

    还有这个:

    [System.ServiceModel.Web.WebInvoke(UriTemplate = "/RegisterUser", Method = "POST")]
    

    到这里:

    [System.ServiceModel.Web.WebInvoke(UriTemplate = "/RegisterUser", Method = "POST", BodyStyle=WebMessageBodyStyle.WrappedRequest,
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
    

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多