У меня есть служба отдыха 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 как вход.Кто-нибудь может помочь в этом?