Во-первых, написание xml через конкатенацию действительно ненадежно - рассмотрите возможность использования XmlWriter
/ XDocument
/ XmlDocument
вместо этого, что будет автоматически экранировать любые необходимые символы (<
, &
и т. Д.), А не приведет к неверный xml.
Вы очистили буфер ответов перед записью в него? В действительности было бы намного проще сделать это из необработанного обработчика (ashx
), чем из жизненного цикла страницы aspx. Или переключитесь на MVC, который работает аналогично результату ashx.
Также - из jquery вы, вероятно, должны указать type
как xml
- см. здесь .
Вот пример подходящего обработчика:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
XmlDocument doc = new XmlDocument();
XmlElement root = (XmlElement) doc.AppendChild(doc.CreateElement("Contents"));
root.AppendChild(doc.CreateElement("From")).InnerText = "some text";
root.AppendChild(doc.CreateElement("To")).InnerText = "some more text";
root.AppendChild(doc.CreateElement("Subject")).InnerText = "this & that";
root.AppendChild(doc.CreateElement("Message")).InnerText = "a < b > c";
doc.Save(context.Response.Output);
}