Я работаю над REST API, который я публикую для использования POST и XML в качестве контента. В моем методе WebInvoke он, кажется, сериализует только некоторые свойства. Например, я передаю FirstName, LastName, Email, Phone и Address, но он не устанавливает свойства Email и Address. Поэтому, когда он добавляет данные в мою базу данных, эти поля остаются пустыми.
Почему это? Почему он устанавливает одни свойства, а другие нет? Я попытался изменить порядок заказа, и это ни на что не повлияло. Это также подводит меня к еще одному вопросу: ВСЕ ли свойства должны быть переданы в xml, или будет достаточно только нескольких таких, как я? Я надеюсь, что ответ не нужен, потому что это может быть довольно динамичная система, и новые свойства могут часто добавляться без изменения XML.
Вот некоторые из соответствующих кодов:
public class Lead
{
#region Public Properties
[DataMember(Name = "LeadId")]
public int LeadId { get; set; }
[DataMember(Name="FirstName")]
public string FirstName { get; set; }
[DataMember(Name = "MiddleName")]
public string MiddleName { get; set; }
[DataMember(Name = "LastName")]
public string LastName { get; set; }
[DataMember(Name = "Email")]
public string Email { get; set; }
[DataMember(Name = "Email2")]
public string Email2 { get; set; }
[DataMember(Name = "Phone")]
public string Phone { get; set; }
[DataMember(Name = "Phone2")]
public string Phone2 { get; set; }
[DataMember(Name = "Address")]
public string Address { get; set; }
[DataMember(Name = "Address2")]
public string Address2 { get; set; }
[DataMember(Name = "Address3")]
public string Address3 { get; set; }
[DataMember(Name = "City")]
public string City { get; set; }
[DataMember(Name = "State")]
public string State { get; set; }
[DataMember(Name = "Zip")] etc...
Вот операция Контракт
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "leads",
BodyStyle= WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml)]
string AddLead(Lead lead);
Вот функция AddLead в Сервисе:
public string AddLead(Lead lead)
{
string result = lead.Submit();
if (result == "Success")
{
return "Success. " + lead.LeadId;
}
else
{
return result;
}
}
А вот XML, который я передаю:
<?xml version="1.0" encoding="utf-8"?>
<Lead xmlns="http://www.myrenamednamespace.com/leads">
<FirstName>John</FirstName>
<LastName>Doe</LastName>
<Email>JohnDoe@gmail.com</Email>
<Phone>8885551234</Phone>
<Address>123 Fake St</Address>
<City>Fake City</City>
</Lead>