2008-09-16 18 views
4

kodlu http istekleri kodlanmıştır Bir J2ME istemcisi, yığınlanmış aktarım kodlaması ile HTTP POST istekleri gönderiyor.Okuma gövdesi yığınlanmış aktarımda ASP.NET

ASP.NET (hem IIS6 hem de WebDev.exe.server'de) isteği okumaya çalıştığında, İçerik Uzunluğunu 0 olarak ayarlar. Bu istek tamam, çünkü istek yüklendiğinde İçerik uzunluğu bilinmiyor . Sonuna kadar Request.InputStream okurken

Ancak, burada 0.

döndürür ben giriş akışı okumak için kullanıyorum kodu.

using (var reader = new StreamReader(httpRequestBodyStream, BodyTextEncoding)) { 
    string readString = reader.ReadToEnd(); 
    Console.WriteLine("CharSize:" + readString.Length); 
    return BodyTextEncoding.GetBytes(readString); 
} 

İstemcinin davranışını Fiddler ile, örn.

URL http://localhost:15148/page.aspx

Başlıkları: User-Agent: Fiddler Transfer-Encoding: Yığın halinde Host: somesite.com:15148

Vücut tavşan tavşan tavşan tavşan. Geldiğiniz için teşekkürler, çok yararlı oldu! Yukarıdan

Bedenim okuyucu

kimse IIS ve ASP.NET Development Server (cassini) yığın halinde kodlama etkinleştirme bilen var mı ... ... topal sıfır uzunlukta bayt dizisi dönecek?

IIS için this script buldum ama çalışmıyor.

cevap

1

Bu url artık çalışmıyor, dolayısıyla bunu doğrudan sınamak zor. Bunun işe yarayıp yaramadığını merak ettim ve google, bytes.com numaralı telefondan deneyime sahip birisini açtı. Web sitenizi tekrar yükseltirseniz, bunun gerçekten işe yarayıp yaramadığını görebilirim.

Joerg Jooss yazdı: (hafifçe kısalık için modifiye )

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()); 
} 
2

resmi gibi görünüyor: Cassini does not support Transfer-Encoding: chunked requests. Varsayılan olarak

, istemci kullanarak büyük ikili akışları gönderen yığınlanmış HTTP Aktarma-Kodlama. ASP.NET Geliştirme Sunucusu kodlama bu tür desteklemediğinden , Büyük ikili akışları kabul etmelidir bir akış veri hizmeti barındırmak için bu Web sunucusunu kullanamazsınız.

İlgili konular