private void RequestCallback(IAsyncResult ar) { try { var listener = (HttpListener)ar.AsyncState; if (!listener.IsListening) return; var handlerParams = new RequestHandlerParams { EventLink = EventLink, Context = listener.EndGetContext(ar), Port = HttpPort, ServerVersion = ServerVersion, WorkingDirectory = WorkingDirectory, Queue = _queue, WriteSync = _writeSync }; using (var handler = new RequestHandler(handlerParams)) { // обрабатываем запрос handler.HandleRequest(); } // повторно включаем прием запросов listener.BeginGetContext(RequestCallback, listener); } catch (HttpListenerException ex) { // возникает при остановке сервиса EventLink.Post(ConstHelper.EventSource, _requestCallbackId, ex); } catch (ObjectDisposedException ex) { // возникает при остановке сервиса EventLink.Post(ConstHelper.EventSource, _requestCallbackId, ex); } }
public RequestHandler(RequestHandlerParams handlerParams) { _handlerParams = handlerParams; _hostName = Dns.GetHostName(); }