Как заставить запросы быть JSON? Т.е. как заблокировать тело XML?

У меня есть служба REST WCF и клиентское приложение WCF для него.

Моя операция имеет атрибут WebGet со следующими свойствами: BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json

Однако, когда я использую клиент WCF, запрос выполняется с телом в формате XML! Это нежелательно! Как я могу изменить его, чтобы использовать JSON?

Кроме того, я хочу также предотвратить прием XML на стороне сервера - как мне это сделать? Я бы ожидал указать RequestFormat, чтобы сделать это, но это, кажется, просто предложение?

Редактировать: не важно, я идиот. Я искал неправильный контракт на операцию - правильные были внутри области, которую я не расширил... клиент работает нормально. Точка сервера все еще действительна, но в контексте этого вопроса, вероятно, лучше рассмотреть этот вопрос закрытым.

2 ответа

Решение

Неважно, я идиот. Я искал неправильный контракт на операцию - правильные были внутри области, которую я не расширил... клиент работает нормально. Точка сервера все еще действительна, но в контексте этого вопроса, вероятно, лучше рассмотреть этот вопрос закрытым.

Что вы имеете в виду, что вы указываете [WebGet] и получаете запрос с телом XML? Запрос GET не может иметь тела (любые входные данные должны быть частью пути URL или строки запроса). Вы говорите о [WebInvoke]?

Что касается применения формата запроса на стороне сервера, то сейчас я думаю, что WCF по умолчанию обрабатывает оба формата независимо от того, что вы указали в контракте. Вы, вероятно, можете применить его самостоятельно, посмотрев на тип содержимого сообщения запроса и отклонив его, если это "text/xml" (или что-то иное, чем application/json в этом отношении).

Другие вопросы по тегам