[Mono-list] Request.InputStream exception
Peter
petervyvey at village.uunet.be
Thu Sep 15 11:30:24 EDT 2005
Hello,
I figured out what was wrong. If the Http request has no content then trying to access the Request.Inputstream fails. So the following code works:
...
public void ProcessRequest(HttpContext context)
{
try
{
string _request = string.Empty;
if (this._context.Request.ContentLength>0)
{
StreamReader _streamReader = new StreamReader(context.Request.InputStream);
_request = _streamReader.ReadToEnd();
}
this._context = context;
this.RequestRouter();
}
catch
{
throw;
}
}
...
The IF..THEN is not neccessary in .Net 1.1.
Regards,
Peter
Op Wednesday 14 September 2005 23:32, schreef Peter:
> Hello,
>
> I am trying to implement an IHttpHandler, using the following code to read
> the content of the request:
>
> ...
>
> public void ProcessRequest(HttpContext context)
> {
> try
> {
> StreamReader _streamReader = new
> StreamReader(context.Request.InputStream); string _request =
> _streamReader.ReadToEnd();
> this._context = context;
> this.RequestRouter();
> }
> catch
> {
> throw;
> }
> }
>
> ...
>
> I get an exception:
>
> Error Message: HTTP 500.
>
> Stack Trace:
>
> System.IO.IOException: Read failure
>
> Server stack trace:
> in <0x000c3> System.Net.Sockets.NetworkStream:Read (System.Byte[] buffer,
> Int32 offset, Int32 size) in <0x00095> System.IO.BinaryReader:Read
> (System.Byte[] buffer, Int32 index, Int32 count) in <0x00075>
> Mono.WebServer.ModMonoRequest:GetClientBlock (System.Byte[] bytes, Int32
> position, Int32 size) in <0x00019> Mono.WebServer.ModMonoWorker:Read
> (System.Byte[] buffer, Int32 position, Int32 size) in <0x001aa>
> Mono.WebServer.BaseRequestBroker:Read (Int32 requestId, Int32 size,
> System.Byte[] buffer) in (wrapper remoting-invoke-with-check)
> Mono.WebServer.BaseRequestBroker:Read (int,int,byte[]&) in (wrapper
> xdomain-dispatch) Mono.WebServer.BaseRequestBroker:Read
> (object,byte[]&,byte[]&,int,int,byte[]&)
>
> Exception rethrown at [0]:
> ---> System.Net.Sockets.SocketException: Operation on non-blocking socket
> would block in <0x0006d> System.Net.Sockets.Socket:Receive_nochecks
> (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags) in
> <0x00053> System.Net.Sockets.Socket:Receive (System.Byte[] buf, Int32
> offset, Int32 size, SocketFlags flags) in <0x00075>
> System.Net.Sockets.NetworkStream:Read (System.Byte[] buffer, Int32 offset,
> Int32 size)--- End of inner exception stack trace ---
>
> in (wrapper xdomain-invoke) Mono.WebServer.BaseRequestBroker:Read
> (int,int,byte[]&) in (wrapper remoting-invoke-with-check)
> Mono.WebServer.BaseRequestBroker:Read (int,int,byte[]&) in <0x0003d>
> Mono.WebServer.ModMonoWorkerRequest:ReadEntityBody (System.Byte[] buffer,
> Int32 size) in <0x00326> System.Web.HttpRequest:MakeInputStream ()
> in <0x00013> System.Web.HttpRequest:get_InputStream ()
> in <0x00028> HttpRequestDemo.RequestHandler:RequestRouter ()
>
> I think it is while accessing 'context.Request.InputStream'. This code
> works under .Net framework 1.1. Does anyone have an idea what is wrong ?
>
> Regards,
>
> Peter
> _______________________________________________
> Mono-list maillist - Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
More information about the Mono-list
mailing list