gpt4 book ai didi

c# - 通过 C# IHttpHandler 访问多部分 HTTP 请求体

转载 作者:可可西里 更新时间:2023-11-01 16:33:28 24 4
gpt4 key购买 nike

这应该很简单,我觉得我只是错过了一些东西。我是这个应用程序的 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; 上设置的断点。

我到底错过了什么?

最佳答案

您需要使用 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);
}

关于c# - 通过 C# IHttpHandler 访问多部分 HTTP 请求体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26658346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com