400坏请求但无法找到问题

时间:2012-04-18 22:00:36

标签: c# wcf web-services rest bad-request

我真的很难弄清楚为什么我在客户端从POST方法收到400错误请求。我的其他POST方法适用于此服务和客户端。然而这个不起作用?我希望一双新眼睛能找到问题吗?

我的服务如下:

    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/Message")]
    void AddMessage(Message message);
    //Post Method for Message

    [DataContract(Name = "Message")]
    public class Message
    {
    [DataMember(Name = "MessageID")]
    public string MessageID { get; set; }
    [DataMember(Name = "GroupMessage")]
    public string GroupMessage { get; set; }
    //DataContracts for Message


    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
    public class RawDataService : IReceiveData
    {
    List<Message> messages = new List<Message>();
    int eCount = 0;

    public void AddMessage(Message message)
    {
        message.MessageID = (++eCount).ToString();
        messages.Add(message);
    }
    // add message method, increment MessageID

客户代码发布,在标记的行上提供400错误请求:

    private void button15_Click(object sender, EventArgs e)
    {
        string uriMessage = "http://localhost:8000/Service/Message";
        StringBuilder sb1 = new StringBuilder();
        sb1.AppendLine("</Message>");
        sb1.AppendLine("<GroupMessage>" + this.textBox22.Text + "</GroupMessage>");
        sb1.AppendLine("</Message>");
        string GroupMessage = sb1.ToString();
        byte[] arr1 = Encoding.UTF8.GetBytes(GroupMessage);
        HttpWebRequest req1 = (HttpWebRequest)WebRequest.Create(uriMessage);
        req1.Method = "POST";
        req1.ContentType = "application/xml";
        req1.ContentLength = arr1.Length;
        Stream reqStrm1 = req1.GetRequestStream();
        reqStrm1.Write(arr1, 0, arr1.Length);
        reqStrm1.Close();
        HttpWebResponse resp1 = (HttpWebResponse)req1.GetResponse(); //400 bad request?
        MessageBox.Show(resp1.StatusDescription);
        reqStrm1.Close();
        resp1.Close();
    }

1 个答案:

答案 0 :(得分:4)

这可能是它。

sb1.AppendLine("</Message>");
sb1.AppendLine("<GroupMessage>" + this.textBox22.Text + "</GroupMessage>");
sb1.AppendLine("</Message>");

开放的Message元素实际上是一个结束元素。