Onur ERYILMAZ Ответов: 1

Wcf service POST issue about json


Привет,

У меня есть проблема с контрактом на постоперационную работу веб-службы WCF.

Если я отправлю свою строку json вот так(голую), то получу ошибку bad request(400). Если я оберну эту строку json, то в метод придет пустой объект.

{"WorkCommandNumber":"F999/1","BLPProductCode":"F999","ReceivedOrderNumber":16,"GroupNumber":1,"WorkCommandOpenDate":"2017-12-04T23:00:00+02:00","RevisionCode":"R0","DeliveryLocation":"LOCATION XYZ","DueDate":"2018-01-09T00:00:00+02:00","ShippingDate":null,"Notes":"Test Note","WorkCommandDocuments":[],"WorkCommandProblems":[],"WorkCommandProductionConsignments":[],"WorkCommandProductionProcesses":[{"ID":20,"ProductionProcessCode":"APPROVAL","CompanyCode":"BLP","WorkCommandNumber":"F999/1"}],"WorkCommandProductions":{"WorkCommandNumber":"F999/1","ProductionMaterial":"PLASTIC","ProductionStartDate":"2017-12-04T00:00:00+02:00","ProductionFinishDate":null,"MoldKnifeStockCode":null},"WorkCommandProductionTools":[],"WorkCommandSubProducts":[]}


Не могли бы вы помочь мне в этом вопросе?

Спасибо.

EDIT: проблема заключалась в том, что .NET Json Serializer сериализует формат ISO даты.("2017-12-04T00:00:00+02:00")
Но служба WCF не может преобразовать этот формат даты, и она получает нулевой или пустой объект.
Когда я меняю формат даты формы ISO форматирования на форматирование Windows, проблема решена.

Что я уже пробовал:

Мой Контракт Работы ;

[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/UpdateWorkCommand")]
string UpdateWorkCommand(WorkCommand WorkCommandToUpdate);


Попытки;
1 - Set BodyStyle = WebMessageBodyStyle.Оголите и отправьте голую строку json. (400 Плохих Запросов)
2 - Set BodyStyle = WebMessageBodyStyle.Оголите и отправьте обернутую строку json. (Пустой объект приходит(не нулевой))
3 - Set BodyStyle = WebMessageBodyStyle.Завернутая и отправленная завернутая строка json.(400 Плохих Запросов)
4 - Set BodyStyle = WebMessageBodyStyle.Оберните и отправьте голую строку json.(Приходит нулевой объект)

public string UpdateWorkCommand(WorkCommand WorkCommandToUpdate)
{ 
     // Some Code
}


Я называю этот метод службы с JSON-строку, используя почтальона.

P. S: Я установил тип содержимого заголовка на "application-json"

lw@zi

Я предполагаю, что вы настроили обязательную привязку для службы WCF. Можете ли вы проверить, имеет ли ваша полезная нагрузка правильные имена свойств и типы данных?

Onur ERYILMAZ

Я проверил это и обнаружил, что проблема заключается в моих свойствах даты, если я отправлю свой json следующим образом;

{"WorkCommandNumber":"F999/1","BLPProductCode":"F999","ReceivedOrderNumber":16,"GroupNumber":1}

Свойства объекта прекрасно настраиваются, но когда я добавляю дату, как это;

{"WorkCommandNumber":"F999/1","BLPProductCode":"F999","ReceivedOrderNumber":16,"GroupNumber":1,"WorkCommandOpenDate":"2017-12-04T23:00:00+02:00"}

Я получаю плохую ошибку запроса.

Как это решить?

Richard Deeming

Тот факт, что ваш вопрос решен, не сразу бросается в глаза. Вы должны опубликовать свою правку как решение и отметить ее как принятую. :)

1 Ответов

Рейтинг:
1

Onur ERYILMAZ

Проблема заключалась в том, что .NET Json Serializer сериализует формат ISO даты.("2017-12-04T00:00:00+02:00")
Но служба WCF не может преобразовать этот формат даты, и она получает нулевой или пустой объект.
Когда я меняю формат даты формы ISO форматирования на форматирование Windows, проблема решена.