Beispiel #1
0
        private void CompleteGetContext(IAsyncResult result)
        {
            if (_disposed)
            {
                return;
            }

            var context = _listener.EndGetContext(result);

            _listener.BeginGetContext(CompleteGetContext, null);

            if (!_pathRegex.IsMatch(context.Request.Url !.AbsolutePath))
            {
                context.Response.StatusCode = 404;
                context.Response.Close();
                return;
            }

            if (context.Request.HttpMethod != Method)
            {
                context.Response.StatusCode = 405;
                context.Response.Close();
                return;
            }

            if (RequiredHeaders != null)
            {
                if (!RequiredHeaders.AllowsContentType(context.Request.ContentType))
                {
                    context.Response.StatusCode = 415;
                    context.Response.Close();
                    return;
                }

                if (!RequiredHeaders.AllowsAccept(context.Request.AcceptTypes))
                {
                    context.Response.StatusCode = 406;
                    context.Response.Close();
                    return;
                }
            }

            try
            {
                using var receiverMessage = new HttpListenerReceiverMessage(context, HttpResponseGenerator, _pathRegex, _pathTokens);
                MessageHandler?.OnMessageReceivedAsync(this, receiverMessage).GetAwaiter().GetResult();
            }
#pragma warning disable CA1031 // Do not catch general exception types
            catch (Exception ex)
#pragma warning restore CA1031 // Do not catch general exception types
            {
                OnError("Error in MessageHandler.OnMessageReceivedAsync.", ex);
            }
        }
Beispiel #2
0
 /// <summary>
 /// Remove SOAP header definition from message.
 /// </summary>
 public void Remove()
 {
     RequiredHeaders.Clear();
     headerNamespaces.Clear();
 }