这应该是如此简单,我觉得我只是缺少一些东西。我是这个应用程序的HTTP方面的新手,所以我也觉得我在黑暗中拍摄。
我们正在进行B2B EDI。我们将收到多部分POST请求。每个部分都是XML。我需要提取每个部分并将每个部分转换为XmlDocument。
这是我写的。
using System;
using System.Collections.Generic;
using System.Web;
using System.Xml;
namespace Acme.B2B
{
public class MultipleAttachments : IHttpHandler
{
#region IHttpHandler Members
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
var ds = extractDocuments(context.Request);
return; // Written for debugging only.
}
#endregion
#region Helper Members
private IEnumerable<XmlDocument> extractDocuments(HttpRequest r)
{
// These are here for debugging only.
var n = r.ContentLength;
var t = r.ContentType;
var e = r.ContentEncoding;
foreach (var f in r.Files)
yield return (XmlDocument)f;
}
#endregion
}
}
我非常有信心(XmlDocument)f
无法工作,但我仍然在探索。奇怪的是,在var n = r.ContentLength;
上设置一个断点,代码永远不会达到那个断点。它只是达到我在无关return;
上设置的断点。
我错过了什么?
答案 0 :(得分:2)
您需要使用HttpPostedFile.InputStream
并将其传递给XDocument
构造函数:
foreach (HttpPostedFile postedFile in r.Files)
{
yield return XDocument.Load(postedFile.InputStream);
}
或者如果你想要XmlDocument
:
foreach (HttpPostedFile postedFile in r.Files)
{
yield return new XmlDocument().Load(postedFile.InputStream);
}