Служба WCF Rest передает объект [] используя json - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть служба отдыха WCF, в которой в качестве входных данных используется объект ниже.

[DataContract]
public class ODMServiceParameters
{
    [DataMember]
    public string name { get; set; }

    [DataMember]
    public string Op { get; set; }

    [DataMember]
    public object[] param { get; set; }

    [DataMember]
    public string logname { get; set; }
}

На стороне клиента Я написал приведенный ниже код для доступа к службе.

ODMServiceParameters odmParameters = new ODMServiceParameters();
        odmParameters.name = name;
        odmParameters.Op = op;
        odmParameters.param = args;
        odmParameters.logname = _logName;
        HttpClient client = new HttpClient();
        //string requestURL = ConfigurationManager.AppSettings["ODMServiceURL"];
        string requestURL = "http://localhost:49634/ODMWCFRestService.svc/Call";
        string jsonString = JsonConvert.SerializeObject(odmParameters);
        //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        object obj = null;

        try
        {
            var request = new StringContent(jsonString, Encoding.UTF8, "application/json");
            var responseObject = client.PostAsync(requestURL, request).Result;
            if (responseObject.IsSuccessStatusCode)
            {
                var strinContent = responseObject.Content.ReadAsStringAsync().Result;
                byte[] bytes = JsonConvert.DeserializeObject<byte[]>(strinContent);

                obj = SerializeUtils.Deserialize(bytes);
            }
            return obj;

        }
        catch (Exception oex)
        {
            string s = oex.ToString();
            throw;
        }

В приведенном вышекод для odmParameters.param, который является типом объекта [], если я передаю строку или int, все работает нормально. Но для этого параметра я хочу назначить объект следующим образом:

public class SyncLog
{
    public SyncLog()
    {

    }
    public SyncLog(Int32 syncRequestID, string _log, SyncLogStatusType _logType = SyncLogStatusType.Fail)
    {
        Log = _log;
        LogType = _logType;
        LoggedToDB = false;
        CreatedDateTime = DateTime.Now;
        SyncRequestID = syncRequestID;
    }
    private DateTime _createdDateTime;
    public DateTime CreatedDateTime
    {
        get
        {
            return _createdDateTime;
        }
        set
        {
            _createdDateTime = value;
            CreatedDateTimeStamp = value.ToString("MM/dd/yyyy HH:mm:ss");
        }
    }
    public string Log { get; set; }
    public string Status { get; set; }
    public SyncLogStatusType StatusType { get; set; }
    public string CreatedDateTimeStamp { get; set; }
    public bool LoggedToDB { get; set; }
    public Int32 SyncRequestID
    {
        get;
        set;
    }
    public SyncLogStatusType LogType { get; set; }
}

}

Я передаю этот объект Synclog объекту [], который принимает нормально.Но когда я размещаю ввод на стороне сервера, объект не корректен.I терпит неудачу с ошибкой ссылки на объект, поскольку это не могло получить объект synclog как вход.Кто-нибудь может помочь в этом?

...