-1

クライアント側の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();
    }
4

1 に答える 1

4

これかもしれません。

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

開始メッセージ要素は実際には終了要素です。

于 2012-04-18T22:11:37.863 に答える