Я пытаюсь отправить некоторый XML в веб-службу, и каждый раз, когда я это делаю, у меня появляется ошибка 400 Bad Request.400 Плохой запрос при отправке XML в WCF
В MyService.cs:
[ServiceContract(Namespace = "http://foo")]
public class MyService
{
[OperationContract, WebInvoke(UriTemplate = "/GetData/", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, Method = "POST")]
public string GetData(DataRequest req)
{
return "Success!";
}
}
[DataContract(Namespace = "http://foo")]
public class DataRequest
{
[DataMember]
public string ID { get; set; }
[DataMember]
public string Data { get; set; }
}
В отдельном Program.cs консоли приложения:
Path p = "C:\\Users\\sflan\\Desktop\\test.xml";
string url = "http://foo/MyService.svc/GetData/";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/xml";
byte[] data = Encoding.UTF8.GetBytes(p.readFile());
req.ContentLength = data.Length;
using (Stream s = req.GetRequestStream())
{
s.Write(data, 0, data.Length);
s.Close();
}
try
{
WebResponse response = req.GetResponse();
using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(rdr.ReadToEnd());
rdr.Close();
}
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
XML, я пытаюсь отправить в файле:
<root>
<Users ID="2" Data="This is some sample data." />
</root>
Я искал вокруг часами поиск решения, но не смог его найти. Мой web.config позволяет максимальный размер буфера/пул и все, что мне удалось найти, но все равно не повезло. Стоит отметить, что если я удалю «DataRequest req» из моей подписи метода GetData, я получаю сообщение об успешном завершении, но мне нужно иметь возможность работать с данными XML.
Может ли кто-нибудь сказать мне, что я делаю неправильно?