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

问题描述

大家好!遇到一个很麻烦的问题,我的应用是一个WebApplication,客户端会向我的某个网页POST一段很长的数据,因为很长,他会使用chunked编码,(chunked编码即一段一段发,每一段都有头,表示长度,具体不明白,可参考google)我需要非常及时的处理发来的数据,即他发来一段数据,我就处理一段,而目前asp.net封装办法,似乎是等所有数据发送完成,他把一段一段的数据拼成一个流。然后再返回给我,比如,我在Page_Load里用Request.InputStream是没办法立即得到数据的,调用将会一直等待,直到客户端全部发完才能使用Request.InputStream流。这不满足我的要求,似乎也违被了chunked编码的初衷。其实只要asp.net网页允许我直接接收裸的Http请求即可,我会自己给chunked数据解码拼装。我想了很多办法,就是没办法获得收裸的Http请求,包括使用HttpModule方式,都不行。有经验的大哥,分享一下怎么样解决此问题?另,Java应当是可以访问到的,因为我曾经POST过数据给Java写的网页,也是chunked发送的,他能立即收到,并分段处理。有点长,无论如何,感谢看完。

解决方案

解决方案二:
设置requst的编码格式。
解决方案三:
我现在是接收端,不是发送端,没法设置requst的编码格式,顶一下。
解决方案四:
你要自己处理那些份段??asp.net的话chunked是iis替你处理的!如果是gzip压缩也会给自动解压了要直接在80上取数据包好像不行!那要用VC写isapi!如果要纯裸的可以自己用Socket写或参考.net2.0里那个WebDev.WebServer.EXE的代码写个小型的iis
解决方案五:
FlashElf兄:你说用socket自己写当然没有什么问题,处理这么个事也不会太麻烦,关键是如果这样的话,那我的程序部署起来就太麻烦了。我还是希望尽可能使用asp.net的网页来解决。另:我知道chunked和gzip压缩的数据,是asp.net封装起来,处理过了。可是我想,作为asp.net的设计者,他应当留下接口,让我们有办法直接获取裸的HTTP数据的,因为chunked的本意就是一段一段发送,一段一段除了可以传大文件,也是为了可以即时处理数据。如果不留下接口,那我们就没办法使用chunked带来的好处了。那asp.net这部分的设计应当是相当失败的。请问您能确定asp.net里真的没有办法直接获取吗?我隐隐觉得应当是有的,可是找不到资料,网上的资料好少。另,我写了个httpModule,在BeginRequest里也取不到原始HTTP请求数据,还是解码过的(解码过的就意味着不及时,数据都发完了才可以访问)
解决方案六:
建议看看asp.net下的httpModule技术
解决方案七:
顶一下,HttpModule也没找到相关的资料,可以获取裸的HTTP请求信息。
解决方案八:
请在MSDN内查阅HttpWorkerRequest类。基本上所有能够做到显示上传进度的组件,都是用HttpWorkerRequest的,既然上传进度能够计算得出,那就表明HttpWorkerRequest确实能够在上传过程中进行处理。详细的做法,建议你看看显示上传进度的组件是怎么做的。
解决方案九:
http://msdn2.microsoft.com/zh-cn/library/system.web.ihttpmodule.aspx

时间: 2025-01-20 19:10:49

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

我问一个笼统一点的问题,关于ASP.net网站开发环境的!请大家来看看解答一下.

问题描述 突然发现现在有不少.net的网站和实例,在编写方法上来讲,应都不是依靠用vs2003或者vs2005的开发环境中写出的.按说在web规划,设计,切片,布局做完以后应该就是添加动态内容.编写程序..我想问一下,现在主流的,或者大家常用的开发环境都是什么呢?比方说,现在dreamweaver8和dreamweaverCS3,本应是面向布局的软件.但是里面的表单跟数据相关的工具也是比较全面,我的意思并不是说动态功能要如何实现,理论上说就算用记事本也当然可以实现任何技术,但是一般没有人用记事本

php-求问一个web文件下载问题

问题描述 求问一个web文件下载问题 自己制作的web网页下载文件时,其他功能都不能实现,只有等下载完成才能点击其他界面实现其他功能.php代码,怎么解决这个问题,谢谢各位大神 解决方案 在下载过程当中主线程被阻塞了,只有在下载完成后开能进行其他操作.你可以创建一个子线程来完成下载功能. 推荐去看看阻塞,非阻塞,同步,异步这方面的知识.

调用-问一个c# asp.net 的问题

问题描述 问一个c# asp.net 的问题 我有三个方法 分别为 A B C 现在AB都去调用C 方法 那么C怎么判断是谁调用了它 比如:A去调用C C就会弹出("是A调用了我") 反之亦然 解决方案 public void A() { C("A"); } public void B() { C("B"; } public void C(string methodName) { //这里methodName就可以知道是哪个方法调用的 } 解决方

问一个简单的问题ASP.NET 连接的

问题描述 问一个简单的问题ASP.NET 连接的 inline code< 详细 inline code 这句话什么意思啊

问一个100分的数据库问题!!!!!!!!!!!!!!!

问题描述 现在有这样一个情况,我有4个级别的代理商.一级可以开发二级和四级,二级可以开发三级和四级.三级可以开发四级.我现在有个四级代理,我想找到他的上级..不知道我描述的清楚吗? 解决方案 解决方案二:问题清楚不清楚我不知道反正是无从下口回答!解决方案三:传销网络数据??解决方案四:给每个代理表中加一个字段用来记录它的上级就是了啊??解决方案五:你描述的很清楚,可是神仙也帮不了你.你的帖子有如下的缺点1.没有告诉大家你用的是sql还是oracle还是其他的数据库2.你是要大家帮你设计表结构,还

路径-求问一个~/和/表示目录的问题

问题描述 求问一个~/和/表示目录的问题 我的代码是这样的 <body style="overflow: hidden; background: url(~/Content/Images/7_7.jpg) no-repeat center center;"> <!----------------------网页的头部 开始-------------------------> <div style="background: url(/Content

一个好难理解的c++编译错误.

问题描述 一个好难理解的c++编译错误. 代码如下: #include using namespace std; main(){ set s; const char* p; s.erase(p); } 编译器发出错误: error: invalid conversion from 'const char*' to 'std::set::key_type {aka char*}' [-fpermissive] s.erase(p); 解决方案 set s: 然后就会runtime error 然后

服务器-问一个关于putty的问题

问题描述 问一个关于putty的问题 菜鸟问一个小问题,putty远程登录服务器之后如何把服务器上的文件下载到本地,以及如何把本地文件传到服务器上 解决方案 如果你的本机是windows的,可以使用工具:WinSCP 解决方案二: 只要知道本地的IP地址就可以使用scp命令拷贝,如:scp -r 文件夹名 用户名@服务器IP:/目的路径 然后输入用户名密码就可以实现copy 解决方案三: 只要知道本地的IP地址就可以使用scp命令拷贝,如:scp -r 文件夹名 用户名@服务器IP:/目的路径

一个小网站,使用iis6,asp语言,发现最近网站响应很慢,w3wp进程占用内存很高,怎么回事?

问题描述 一个小网站,使用iis6,asp语言,发现最近网站响应很慢,w3wp进程占用内存很高,怎么回事? 小网站,使用iis6,asp语言,发现最近网站响应很慢,w3wp进程占用内存很高,怎么回事 解决方案 一样发现这个问题,同问,一直以为是好久没启动会相对慢一点而已