Я отправляю запрос на мыло из SSRS в servicetack, и независимо от того, что я пытаюсь, я не могу заставить Servicestack распознать что-либо как логическое значение и десериализовать его.
[DataContract]
[Route("/Stuff")]
public class GetStuff : IReturn<GetStuffResponse>
{
[DataMember]
[ApiMember(Name = "Is Enabled",
DataType = "bool",
IsRequired = false)]
public bool? IsEnabled { get; set; }
}
Входящий запрос на мыло выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetStuff xmlns="http://www.myCompany.com/types">
<IsEnabled>true</IsEnabled>
</GetTradesGroupedByClient>
</soap:Body>
</soap:Envelope>
Я пытался заставить запрос мыла отправлять «0» и «1» для true / false и true с заглавной буквой «T», но Servicestack всегда десериализует его как «null».
У кого-нибудь есть предложения?
Редактировать 1
Обновление о дальнейшей странности. Я заменил bool на int в надежде, что это будет меньше хлопот, но это также не десериализовать. Поэтому я добавил несколько полей в запрос, чтобы проверить, не произойдет ли вся десериализация:
[DataContract]
[Route("/Stuff")]
public class GetStuff : IReturn<GetStuffResponse>
{
[DataMember]
[ApiMember(Name = "Summary Date",
DataType = "DateTime",
IsRequired = false)]
public DateTime? SummaryDate { get; set; }
[DataMember]
[ApiMember(Name = "Summary End Date",
DataType = "DateTime",
IsRequired = false)]
public DateTime? SummaryEndDate { get; set; }
[DataMember]
[ApiMember(Name = "Symbol",
DataType = "string",
IsRequired = false)]
public string Symbol { get; set; }
[DataMember]
[ApiMember(Name = "Email",
DataType = "string",
IsRequired = false)]
public string Email { get; set; }
[DataMember]
[ApiMember(Name = "Is Enabled",
DataType = "int",
IsRequired = false)]
public int? IsEnabled { get; set; }
}
Вот мыло, отправляемое в serviceStack:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetStuff xmlns="http://www.myCompany.com/types">
<SummaryDate>2018-04-26</SummaryDate>
<SummaryEndDate>2018-04-26</SummaryEndDate>
<Symbol>TOU</Symbol>
<Email>Guy.Smiley@myCompany.net</Email>
<IsEnabled>1</IsEnabled>
</GetStuff>
</soap:Body>
</soap:Envelope>
Теперь вот где это странно, две даты и поле «символ» десериализованы правильно. Поле 'Email' и поля 'IsEnabled' не заполнены и имеют нулевое значение. Есть ли способ отследить десериализатор в Serivcestack?