У меня проблемы с локальным веб-сервисом.
Вот параметр, который принимает веб-служба:
[DataContract(Namespace = "http://com.rest")]
[XmlRootAttribute(ElementName = "PlaceCutEventData", Namespace = "http://com.rest", IsNullable = false)]
public class PlaceCutEventData
{
[DataMember(IsRequired = true)]
public string CutName { get; set; }
[DataMember(IsRequired = true)]
public string CutID { get; set; }
[DataMember(IsRequired = true)]
public string StationName { get; set; }
[DataMember(IsRequired = true)]
public string LineID { get; set; }
[DataMember]
public double CutLength { get; set; }
[DataMember]
public string Comment { get; set; }
[DataMember]
public string GeoName { get; set; }
[DataMember]
public bool IsClosed { get; set; }
[DataMember(IsRequired = true)]
public string Phases { get; set; }
public PlaceCutEventData()
{
SetDefaults();
}
[OnDeserializing]
private void OnDeserializing(StreamingContext context)
{
SetDefaults();
}
private void SetDefaults()
{
CutLength = 0.50;
IsClosed = true;
GeoName = "DETAIL";
}
}
Вот как выглядит интерфейс (он уже реализован):
[WebInvoke(UriTemplate = "/PlaceCut", Method = "POST")]
[OperationContract]
[Description("Request to place a cut")]
Task<ServerResponse> PlaceCut(PlaceCutEventData data);
Я могу отправьте запрос в веб-сервис с запросом в формате JSON, и он фактически обработает его. Тем не менее, когда я переключаюсь в формат XML, он всегда возвращает 400 неправильных запросов:
Вот XML:
<PlaceCutEventData xmlns="http://com.rest">
<CutName>testing</CutName>
<CutID>13213</CutID>
<StationName>Test</StationName>
<LineID>TestID</LineID>
<CutLength>0.60</CutLength>
<Comment></Comment>
<GeoName>TestGeoName</GeoName>
<IsClosed>true</IsClosed>
<Phases>N</Phases>
</PlaceCutEventData>
Вот версия json, но мой веб служба фактически принимает этот запрос:
{
"CutName": "testing",
"CutID": "13213",
"StationName": "Test",
"LineID": "TestID",
"GeoName": "TestName",
"Phases": "N",
"IsClosed": true,
"CutLength": 0.60,
"Comment": ""
}
Может кто-нибудь объяснить, почему не работает формат XML?
Большое спасибо.