Пример #1
0
        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);
            }
        }
Пример #2
0
 public RequestHandler(RequestHandlerParams handlerParams)
 {
     _handlerParams = handlerParams;
     _hostName = Dns.GetHostName();
 }