如何在页面上显示已发布到 ASHX 处理程序的 XML?

How do I display XML that has been posted to an ASHX handler on a page?

我是一名使用 C# 并构建简单页面的新程序员,第三方服务 posts XML。我只想将此 XML 作为文本显示在网页上。

我已经启动了一个包含以下方法的新 ASHX 文件:

public void ProcessRequest (HttpContext context) 
{

    StreamReader reader = new StreamReader(context.Request.InputStream);

    String xmlData = reader.ReadToEnd();
    XmlDocument doc = new XmlDocument();

    doc.LoadXml(xmlData);

    context.Response.ContentType = "text/xml";
    context.Response.Write(xmlData);

}

但是,当第三方应用程序尝试 post 访问该页面时,我收到一条错误消息,指出缺少根元素。

如果我对这个错误的理解正确,这似乎意味着 posted 的 XML 格式不正确。

1.) 如果我的这个假设不正确,我尝试使用此处理程序接收和显示 XML 数据的方式是否有问题?

2.) 否则,我如何通过检查使用我的处理程序发送到服务的 XML 的内容来轻松排除故障?

1.)假设很好,否则请求为空

doc.LoadXml(xmlData); 行将是它抱怨缺少根元素的地方。

2.) 您可以从简单地注释掉上面的行开始,因为您还没有对 doc 对象做任何事情。

您可能还需要将内容类型设置为 text/plain

从长远来看,您可能需要一些 try/catch 围绕 LoadXml() 调用的逻辑。可能是这样的……

try
{
    doc.LoadXml(xmlData);
    context.Response.ContentType = "text/xml";
    context.Response.Write(xmlData);
}
catch (Exception e)
{
    context.Response.ContentType = "text/plain";
    context.Response.Write(e.Message);
}