ASP.NET中分块传输编码http请求的读正文
J2ME客户端正在使用分块传输编码发送HTTP POST请求 当ASP.NET(在IIS6和WebDev.exe.server中)尝试读取请求时,它会将内容长度设置为0。我想这是可以的,因为加载请求时内容长度未知 但是,当我将Request.InputStream读到底时,它返回0 下面是我用来读取输入流的代码ASP.NET中分块传输编码http请求的读正文,asp.net,asp.net-mvc,chunked-encoding,Asp.net,Asp.net Mvc,Chunked Encoding,J2ME客户端正在使用分块传输编码发送HTTP POST请求 当ASP.NET(在IIS6和WebDev.exe.server中)尝试读取请求时,它会将内容长度设置为0。我想这是可以的,因为加载请求时内容长度未知 但是,当我将Request.InputStream读到底时,它返回0 下面是我用来读取输入流的代码 using (var reader = new StreamReader(httpRequestBodyStream, BodyTextEncoding)) { string r
using (var reader = new StreamReader(httpRequestBodyStream, BodyTextEncoding)) {
string readString = reader.ReadToEnd();
Console.WriteLine("CharSize:" + readString.Length);
return BodyTextEncoding.GetBytes(readString);
}
我可以用Fiddler模拟客户的行为,例如
URL
标题:
用户代理:Fiddler
传输编码:分块
主持人:somesite.com:15148
身体
兔子。谢谢你的到来,它非常有用
我的身体读取器将返回一个零长度字节数组…lame
有人知道如何在IIS和ASP.NET开发服务器(cassini)上启用分块编码吗
我找到了IIS,但它不起作用。该url不再起作用,因此很难直接测试它。我想知道这是否可行,谷歌在网站上找到了一位对此有经验的人。如果你重新建立你的网站,我可以看看这是否真的有效 Joerg-Jooss写道:(为简洁起见稍作修改) 似乎是官方的: 默认情况下,客户机发送大型 通过使用分块HTTP的二进制流 传输编码因为ASP.NET 开发服务器不支持 这种编码,您不能使用 此Web服务器将承载流媒体 必须接受大型数据的数据服务 二进制流
string responseText = null;
WebRequest rabbits= WebRequest.Create(uri);
using (Stream resp = rabbits.GetResponse().GetResponseStream()) {
MemoryStream memoryStream = new MemoryStream(0x10000);
byte[] buffer = new byte[0x1000];
int bytes;
while ((bytes = resp.Read(buffer, 0, buffer.Length)) > 0) {
memoryStream.Write(buffer, 0, bytes);
}
// use the encoding to match the data source.
Encoding enc = Encoding.UTF8;
reponseText = enc.GetString(memoryStream.ToArray());
}