Не удается отправить в службу отдыха WCF со строго типизированными аргументами - PullRequest
0 голосов
/ 03 мая 2011

У меня есть стандартное приложение WCF Rest (по умолчанию Web.config, Web Routing).Я не могу получить инфраструктуру WCF для автоматической десериализации потока запросов в типизированные объекты.У меня есть служба с методом sig в ​​форме ...

[WebInvoke(Method = "POST", 
            UriTemplate = "", 
            BodyStyle = WebMessageBodyStyle.WrappedRequest, 
            ResponseFormat = WebMessageFormat.Json)]
MethodA(FirstParam first, SecondParam second)

Если я инициирую запрос от fiddler или jQuery с использованием $ .ajax, я получаю ошибку 400 Bad Request.Я провел много поисков и обнаружил, что изменение метода sig на использование System.IO.Stream позволяет выполнять метод, но также добавляет издержки десериализации объектов.

НеобработанныйТело запроса выглядит следующим образом:

{
    "first":"{\"p1\":\"p1 value\",\"p2\":\"p2 value\",\"p3\":100\"p4\":null}",
    "second":"{\"p1\":\"p1 value\"}"
}

Да, приложение даже не взламывает сам сервис, если у метода нет ни потока, ни аргументов.В этом сервисе есть только один метод post, другой метод GET работает правильно.

Я использовал http://www.codeproject.com/KB/ajax/jQueryWCFRest.aspx в качестве эталонной реализации, но не смог получить егоработать над этим решением.

Есть ли что-то, чего мне здесь не хватает, надеюсь, кто-то еще сможет это увидеть?

Леон

1 Ответ

0 голосов
/ 05 мая 2011

Блеф ... проблема оказалась в том, что запрос сериализировал значения!

{
    "first":"{\"p1\":\"p1 value\",\"p2\":\"p2 value\",\"p3\":100\"p4\":null}",
    "second":"{\"p1\":\"p1 value\"}"
}

Должно быть без экранированных кавычек ....

{
    "first":"{"p1":"p1 value","p2":"p2 value","p3":100"p4":null}",
    "second":"{"p1":"p1 value"}"
}

Причиной этого было то, что JSON.stringify вызывался не только для параметров упакованного запроса, но и для каждого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...