问一个较难的问题,关于asp.net网页接收客户端以 chunked 编码POST过来的信息

ccitt 2007-11-30 06:15:40
大家好!

遇到一个很麻烦的问题,我的应用是一个 Web Application, 客户端会向我的某个网页 POST 一段很长的数据,因为很长,他会使用 chunked 编码,(chunked编码即一段一段发,每一段都有头,表示长度,具体不明白,可参考google)我需要非常及时的处理发来的数据,即他发来一段数据,我就处理一段,而目前 asp.net 封装办法,似乎是等所有数据发送完成,他把一段一段的数据拼成一个流。然后再返回给我,比如,我在 Page_Load 里用 Request.InputStream 是没办法立即得到数据的,调用将会一直等待,直到客户端全部发完才能使用 Request.InputStream 流。这不满足我的要求,似乎也违被了 chunked 编码的初衷。

其实只要 asp.net 网页允许我直接接收裸的 Http 请求即可,我会自己给chunked数据解码拼装。我想了很多办法,就是没办法获得收裸的 Http 请求,包括使用 HttpModule 方式,都不行。

有经验的大哥,分享一下怎么样解决此问题?

另,Java应当是可以访问到的,因为我曾经 POST 过数据给 Java 写的网页,也是 chunked 发送的,他能立即收到,并分段处理。

有点长,无论如何,感谢看完。
...全文
337 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2007-12-03
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/zh-cn/library/system.web.ihttpmodule.aspx
cat_hsfz 2007-12-02
  • 打赏
  • 举报
回复
请在MSDN内查阅HttpWorkerRequest类。基本上所有能够做到显示上传进度的组件,都是用HttpWorkerRequest的,既然上传进度能够计算得出,那就表明HttpWorkerRequest确实能够在上传过程中进行处理。详细的做法,建议你看看显示上传进度的组件是怎么做的。
ccitt 2007-12-01
  • 打赏
  • 举报
回复
顶一下,HttpModule 也没找到相关的资料,可以获取裸的 HTTP 请求信息。
whycom 2007-12-01
  • 打赏
  • 举报
回复
建议看看asp.net下的httpModule技术
ccitt 2007-11-30
  • 打赏
  • 举报
回复
FlashElf 兄:

你说用 socket 自己写当然没有什么问题,处理这么个事也不会太麻烦,关键是如果这样的话,那我的程序部署起来就太麻烦了。
我还是希望尽可能使用 asp.net 的网页来解决。

另:我知道 chunked 和 gzip 压缩的数据,是 asp.net 封装起来,处理过了。可是我想,作为 asp.net 的设计者,他应当留下接口,让我们有办法直接获取裸的HTTP数据的,因为 chunked 的本意就是一段一段发送,一段一段除了可以传大文件,也是为了可以即时处理数据。如果不留下接口,那我们就没办法使用 chunked 带来的好处了。那 asp.net 这部分的设计应当是相当失败的。

请问您能确定 asp.net 里真的没有办法直接获取吗?我隐隐觉得应当是有的,可是找不到资料,网上的资料好少。
另,我写了个 httpModule,在 BeginRequest 里也取不到原始HTTP请求数据,还是解码过的(解码过的就意味着不及时,数据都发完了才可以访问)
曲滨_銘龘鶽 2007-11-30
  • 打赏
  • 举报
回复
你要自己处理那些份段??

asp.net 的话 chunked 是iis替你处理的!如果是gzip 压缩也会给自动解压了
要直接在 80 上取数据包好像不行!那要用VC 写 isapi!

如果要纯裸的可以自己用 Socket 写
或参考 .net2.0 里那个 WebDev.WebServer.EXE 的代码写个小型的 iis
ccitt 2007-11-30
  • 打赏
  • 举报
回复
我现在是接收端,不是发送端,没法设置requst的编码格式,

顶一下。
大正他爹 2007-11-30
  • 打赏
  • 举报
回复
设置requst的编码格式。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧