Search code examples
c#.netwebserver

StreamReader doesn't send data always


Below is the code and we want to send data from the response. But the issue is that it doesn't always send the data.

Code

 var rstr = _responderMethod(ctx.Request);
                            var buf = Encoding.UTF8.GetBytes(rstr);
                            ctx.Response.ContentLength64 = buf.Length;
                            ctx.Response.OutputStream.Write(buf, 0, buf.Length);


                            var context = _listener.GetContext();
                            var request = context.Request;
                            using (var reader = new StreamReader(request.InputStream,
                                request.ContentEncoding))
                            {
                                var text = reader.ReadToEnd();
                                Console.WriteLine("Messages ************");
                                Console.WriteLine(text);
                                AiMessagePublisher.SendMessages(text);
                            }

Sometimes it doesn't come to Console.WriteLine("Messages ************");

Any pointers will be appreciated.


Solution

  • I fixed this issue by using below code:

     var context = _listener.GetContext();
                            try
                            {
    
    
                                var request = context.Request;
                                using (var reader = new StreamReader(request.InputStream,
                                    request.ContentEncoding))
                                {
                                    var text = reader.ReadToEnd();
                                    Console.WriteLine("Messages ************");
                                    Console.WriteLine(text);
                                    publisher.SendMessages(text);
                                }
                            }
                            catch(Exception ex)
                            {
    
                            }
                            finally
                            {
    
                                context.Request.InputStream.Close();
    
                            }