【问题标题】:How do I display XML that has been posted to an ASHX handler on a page?如何在页面上显示已发布到 ASHX 处理程序的 XML?
【发布时间】:2015-09-01 21:14:36
【问题描述】:

我是一名新程序员,使用 C# 构建一个简单的页面,第三方服务将 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);

}

但是,当第三方应用程序尝试发布到页面时,我收到一个错误,即缺少根元素。

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

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

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

【问题讨论】:

    标签: c# .net xml ashx


    【解决方案1】:

    1.) 这是一个很好的假设,或者请求是空白的。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      相关资源
      最近更新 更多