从字符串(xml)中删除转义字符并将其发送到WCF服务

时间:2011-08-24 10:24:15

标签: xml wcf http service http-post

我正在尝试向我的WCF服务发出POST http请求,并以XML格式发送一些数据。我尝试使用XmlWriter和字符串连接构建XML字符串,但我总是在字符串中转义字符(\“和其他),因此我的POST失败。

这是我构建XML字符串的方式:

        var data = string.Empty;
        data += (@"<Root xmlns=""http://schemas.datacontract.org/2004/07/..."" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">");
        data += (String.Format("<Element1>{0}</Element1>", element1));
        data += (String.Format("<Element2>{0}</Element2>", element1));
        data += (String.Format("<Element3>{0}</Element3>", element1));
        data += (String.Format("<Element4>{0}</Element4>", element4));
        data += (String.Format("</Root>"));
由于xmlns属性及其值,我得到了Root元素中的字符。这就是我的POST alaways返回400 Bad Request的原因。这就是我发布POST的方式:

        var req = WebRequest.Create(uri);

        req.ContentType = "application/xml; charset=utf-8";
        req.Method = "POST";

        var bytes = Encoding.UTF8.GetBytes(data);
        req.ContentLength = bytes.Length;

        var os = req.GetRequestStream();
        os.Write(bytes, 0, bytes.Length);
        os.Flush();
        os.Close();

        var response = _GetResponseString(req.GetResponse());

        return response;

如何清除不需要的字符并使此POST工作?

1 个答案:

答案 0 :(得分:1)

正如你在评论中所证实的那样,问题不在于逃脱的角色(VS通常是红色鲱鱼,VS中的观察窗口显示它们就好像被转义一样),而是其他东西。

在WCF服务向客户端返回400/500错误的问题中,enabling tracing几乎所有时间都应指向正确的方向来解决问题。