Удаление escape-символов из строки (xml) и отправка их в службу WCF - PullRequest
0 голосов
/ 24 августа 2011

Я пытаюсь сделать HTTP-запрос POST к моей службе WCF и отправить некоторые данные в формате XML. Я попытался создать строку XML, используя как XmlWriter, так и просто конкатенацию строк, но у меня всегда есть экранирующие символы (\ "и другие) в моей строке, и поэтому мой 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>"));

и я получаю \ "символы в элементе Root из-за атрибута xmlns и его значения. Вот почему мой POST всегда возвращает 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 Ответ

1 голос
/ 24 августа 2011

Как вы подтвердили в комментариях, проблема заключалась не в сбежавших персонажах (обычно это красная сельдь, в которой окно наблюдения в VS показывает их, как будто они сбежали), а в другом.

ПочтиВсе время, когда у вас возникает проблема, когда служба WCF возвращает клиенту ошибку 400/500, , включающая трассировку , должна указывать правильное направление для устранения проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...