我正在开发一个网页,需要接收一个HTTP Post请求,并将其读入字节数组进行进一步处理.我有点纠结于如何做到这一点,我被什么是最好的实现方式难住了.以下是我目前的代码:

 public override void ProcessRequest(HttpContext curContext)
    {
        if (curContext != null)
        {
            int totalBytes = curContext.Request.TotalBytes;
            string encoding = curContext.Request.ContentEncoding.ToString();
            int reqLength = curContext.Request.ContentLength;
            long inputLength = curContext.Request.InputStream.Length;
            Stream str = curContext.Request.InputStream;

         }
       }

我正在判断请求的长度及其总字节数,它等于128.现在,我是否只需要使用Stream对象将其转换为byte[]格式?我走的方向对吗?不确定如何继续.任何建议都是很棒的.我需要将整个HTTP请求放入byte[]字段.

谢谢!

推荐答案

最简单的方法是将其复制到MemoryStream,然后在需要时拨打ToArray.

如果您使用的是.NET4,这真的很容易:

MemoryStream ms = new MemoryStream();
curContext.Request.InputStream.CopyTo(ms);
// If you need it...
byte[] data = ms.ToArray();

编辑:如果您没有使用.NET4,您可以创建自己的CopyTo实现.下面是一个充当扩展方法的版本:

public static void CopyTo(this Stream source, Stream destination)
{
    // TODO: Argument validation
    byte[] buffer = new byte[16384]; // For example...
    int bytesRead;
    while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
    {
        destination.Write(buffer, 0, bytesRead);
    }
}

Asp.net相关问答推荐

当前http上下文的http动词

下载功能在 asp.net 的更新面板中不起作用

IIS 将旧用户名返回到我的应用程序

如何通过 Asp.net 中的命令参数传递多个值?

如果站点在 localhost 或 127.0.0.1 上运行,如何判断 ASP.NET MVC 视图

解析 JSON 响应的最简单方法

跨子域共享 ASP.NET cookie

ASP.NET MVC 5 中的路由可选参数

Web Api 参数始终为空

如何设置 CSS 切换器

如何从 HTTP 请求中获取 MAC 地址?

如何使用 asp.net 获取 html Select 的选定值

使用 Asp.Net MVC 和 Web Api 配置 Ninject

有条件地排除 ASP.NET WebForms 中的一个 html 块

如何在 asp.net 中更改 DataBinder.Eval 的日期格式?

VS 2010 中缺少 App_Code 文件夹

模型是否包含字段而不将其添加到数据库中?

调查 Web.Config 重复部分原因的步骤

盒式磁带包与 MVC4 包

在.net的内存数据库中