При выполнении службы WCF POST to REST получите нераспознанное исключение - PullRequest
0 голосов
/ 19 октября 2011

У меня есть метод REST POST следующим образом:

[WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)]
string GetFromXml(XElement xmlString);

Я пытаюсь выполнить почтовую операцию из моего клиента, используя следующий код:

var client = new RestClient();
client.BaseUrl = "http://localhost/XMLRestService/XmlService.svc";
var request = new RestRequest(Method.POST);
request.Resource = "GetFromXml";
client.AddDefaultHeader("Content-Type", "text/xml");            
request.AddBody(obj, "XMLRestService");            
var response = client.Execute(request);

Когда я делаювыше я получаю 400 Плохой запрос.Затем я включил трассировку в службе WCF.А трассировка стека дала мне исключение версии нераспознанного сообщения, которое выбрасывает мой класс System.ServiceModel.CommunicationException.

Я не могу успешно отправить запрос.Помощь оценена.

Ответы [ 3 ]

0 голосов
/ 20 октября 2011

Я наконец нашел причину исключения. Приведенный ниже код отлично работает:

var client = new RestClient();
client.BaseUrl = serviceBaseUrl;
var request = new RestRequest(method){RequestFormat = DataFormat.Xml};
request.Resource = resourceUrl;
request.AddParameter("text/xml",requestBody, ParameterType.RequestBody);
var response = client.Execute(request);

RequestBody, отправляемый в качестве параметра, должен быть сериализованным xmlString.

ПРИМЕЧАНИЕ : Если составной тип, предоставляемый в службе REST, использует DataContractSerializer, убедитесь, что генерируется requestBody с использованием DataContractSerializer, а если используется XmlSerializer, то генерируйте requestBody с помощью XmlSerializer.

0 голосов
/ 27 июля 2012

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

контракт-первый, javascript, ajax, jquery, все требует от вас обработки деталей. С моей стороны это не сложно, но я часами боролся, не видя очевидного.

0 голосов
/ 19 октября 2011

Первое, что я бы попробовал, это использовать application / xml вместо text / xml

...