❔ ✅ HttpListener only receives context once
Hey, I've set up a class that listens for traffic on localhost coming from a different app. The class looks like this:
Everything in the try block runs once, and then execution goes back to the top of the loop and starts awaiting the _listener.GetContextAsync() call again. But it never does anything else, and I know for a fact the traffic it receives at localhost:8000 happens periodically. So it picks up the first one it receives, and then it just stops doing anything. It never enters the catch block, so there isn't any exception thrown.
5 Replies
First thing to check would be to check at which point it is not executing
e.g.
is it definitely staying inside the while loop?
is it never returning from _listener.GetContextAsync();?
It might be easier to put a Console.WriteLine at the top of the while so you can be sure it's still executing.
does it work if you make Start() return a Task and return HandleIncomingConnections() directly? or the same but making it async and "await HandleIncomingConnections()"
you may be "await"ing the call to HandleIncomingConnections, but you aren't awaiting the task that is executing the await
I've done a lot of writelines and breakpoints, so I can say with 99.9% certainty that it stops when it reaches the await _listener.GetContextAsync() during the second iteration of the loop. So it definitely stays in the while loop. Not returning from getcontextasync seems to be the issue.
I'll try the thing you suggested with Start in a little bit!
another thing to try: since it's working the first time it means that something may be "holding on", so you might need to respond (via methods in ctx.Response). Closing the response (ctx.Response.Close()) will allow the listener to listen for a new request.
It's optional to send a response depending on if your consumer (other app) needs one, but you should at least call Close() on the response object
if it still fails, send the code that is calling FluxApiService.Start()
I'm about to try now, but I think you might be spot on with the response part
I had a different version that worked, and in that version I wrote a response
I probably broke something when I chose to omit responding
Yup, that did the trick!
Thanks for the help!
Looks like nothing has happened here. I will mark this as stale and this post will be archived until there is new activity.