400 将 XML 发送到 WCF 时请求错误

本文关键字:WCF 请求 错误 XML | 更新日期: 2023-09-27 18:32:32

我正在尝试将一些XML发布到Web服务,每次这样做时,我都会收到400错误请求错误。

在 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; }
}

在单独的控制台应用程序中 程序.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 允许最大缓冲区大小/池大小以及我能够找到的所有相关内容,但仍然没有运气。 值得注意的是,如果我从 GetData 方法签名中删除"DataRequest req",我会收到成功消息,但我需要能够处理 XML 数据。

谁能告诉我我做错了什么?

400 将 XML 发送到 WCF 时请求错误

XML的格式很差,这是我从围绕同一问题的帖子中没有学到的。

正确的 XML 如下所示:

 <DataRequest xmlns="http://foo">
      <Data>This is some sample data.</Data>
      <ID>2</ID>
 </DataRequest>