Получение нулевых значений при отправке параметра объекта в виде объекта JSON в метод службы WCF - PullRequest
0 голосов
/ 28 ноября 2011

Вот моя подпись метода сервиса:

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

Также тип 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?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 ноября 2017

в вашем сервере Увеличивайте свойство MaxpostSize. У меня мало знаний об IIS, но я думаю, что он будет работать для вас

 <requestLimits maxAllowedContentLength ="<length>" />
0 голосов
/ 21 сентября 2012

Изменить это

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)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...