如何在页面上显示已发布到 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);
}
我是一名使用 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);
}