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