Метод WCF post, возвращает 400 плохих запросов
Я вижу, что есть много ответов на один и тот же вопрос, но я не могу решить свой, Может ли кто-нибудь из вас пройти через мой код и решить мою проблему, пожалуйста. Я создал службу WCF как показано ниже метод POST
Интерфейс (iComplaints. cs)
[OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/insertcomplaint")] Stream InsertComplaint(ComplaintData data);
Класс (жалобы. cs)
public Stream InsertComplaint(ComplaintData data) { //the code }
Класс DataContract (ComplaintData)
public class ComplaintData { [DataMember] public string ComplaintID { get; set; } [DataMember] public string EntryBy { get; set; } }
Я разместил сервис локально, и когда я пытаюсь использовать его с помощью приведенного ниже метода клиента, он дает мне 400 (плохой запрос)
void PostComplaint() { HttpWebRequest req = null; HttpWebResponse res = null; string url = "http://localhost:28522/Complaints.svc/insertcomplaint"; ComplaintData iData = new ComplaintData(); iData.ComplaintID = txtComplaintID.Text; iData.EntryBy = txtEntryBy.Text; req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/json"; req.Headers.Add("SOAPAction", url); using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(iData); } res = (HttpWebResponse)req.GetResponse(); using (var streamReader = new StreamReader(res.GetResponseStream())) { var result = streamReader.ReadToEnd(); TextBox1.Text = result; } }
Веб-конфигурация службы WCF
<service behaviorConfiguration="ServiceBehavior" name="Complaints"> <endpoint address="" behaviorConfiguration="webHttp" binding="webHttpBinding" contract="IComplaints" /> <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> </service>
Пожалуйста, кто-нибудь, помогите.
Что я уже пробовал:
Без особого успеха я попытался изменить стиль тела
WebMessageBodyStyle.WrappedRequest
Я также попытался отправить запрос json в виде строки, но это привело к тому, что входной параметр был равен null в методе post.