Exemplo n.º 1
0
        public static async Task EndHttpHandlerRequestAsync(this IResponse httpRes, bool skipHeaders = false, bool skipClose = false, Func <IResponse, Task> afterHeaders = null)
        {
            if (!skipHeaders)
            {
                httpRes.ApplyGlobalResponseHeaders();
            }

            if (afterHeaders != null)
            {
                try
                {
                    await afterHeaders(httpRes).ConfigAwait();
                }
                catch (Exception e)
                {
                    var log = LogManager.LogFactory.GetLogger(typeof(HttpExtensions));
                    log.Error("Error executing async afterHeaders: " + e.Message, e);
                }
            }

            var req = httpRes.Request;

            if (req != null && !req.Items.ContainsKey(Keywords.HasLogged))
            {
                HostContext.TryResolve <IRequestLogger>()?.Log(req, req.Dto, httpRes.Dto, TimeSpan.Zero);
            }

            if (!skipClose && !httpRes.IsClosed)
            {
                await httpRes.CloseAsync().ConfigAwait();
            }

            HostContext.CompleteRequest(req);
        }
        public virtual void WriteSoapMessage(IRequest req, System.ServiceModel.Channels.Message message, Stream outputStream)
        {
            try
            {
                using (var writer = XmlWriter.Create(outputStream, Config.XmlWriterSettings))
                {
                    message.WriteMessage(writer);
                }
            }
            catch (Exception ex)
            {
                var response = OnServiceException(req, req.Dto, ex);
                if (response == null || !outputStream.CanSeek)
                {
                    return;
                }

                outputStream.Position = 0;
                try
                {
                    message = SoapHandler.CreateResponseMessage(response, message.Version, req.Dto.GetType(),
                                                                req.GetSoapMessage().Headers.Action == null);
                    using (var writer = XmlWriter.Create(outputStream, Config.XmlWriterSettings))
                    {
                        message.WriteMessage(writer);
                    }
                }
                catch { }
            }
            finally
            {
                HostContext.CompleteRequest(req);
            }
        }
Exemplo n.º 3
0
        public static async Task EndHttpHandlerRequestAsync(this IResponse httpRes, bool skipHeaders = false, bool skipClose = false, Func <IResponse, Task> afterHeaders = null)
        {
            if (!skipHeaders)
            {
                httpRes.ApplyGlobalResponseHeaders();
            }

            if (afterHeaders != null)
            {
                await afterHeaders(httpRes);
            }

            var req = httpRes.Request;

            if (req != null && !req.Items.ContainsKey(Keywords.HasLogged))
            {
                HostContext.TryResolve <IRequestLogger>()?
                .Log(req, req.Dto, null, TimeSpan.Zero);
            }

            if (!skipClose && !httpRes.IsClosed)
            {
                httpRes.Close();
            }

            HostContext.CompleteRequest(req);
        }
Exemplo n.º 4
0
        /// <summary>
        /// End a HttpHandler Request
        /// </summary>
        public static void EndHttpHandlerRequest(this HttpContextBase context, bool skipHeaders = false, bool skipClose = false, bool closeOutputStream = false, Action <HttpResponseBase> afterHeaders = null)
        {
            var httpRes = context.Response;

            if (!skipHeaders)
            {
                httpRes.ApplyGlobalResponseHeaders();
            }
            if (afterHeaders != null)
            {
                afterHeaders(httpRes);
            }
            if (closeOutputStream)
            {
                httpRes.CloseOutputStream();
            }
            else if (!skipClose)
            {
                httpRes.Close();
            }
            HostContext.CompleteRequest(context.ToRequest());

            //skipHeaders used when Apache+mod_mono doesn't like:
            //response.OutputStream.Flush();
            //response.Close();
        }
Exemplo n.º 5
0
 /// <summary>
 /// End an MQ Request
 /// </summary>
 public static void EndMqRequest(this IResponse httpRes, bool skipClose = false)
 {
     if (!skipClose && !httpRes.IsClosed)
     {
         httpRes.Close();
     }
     HostContext.CompleteRequest(httpRes.Request);
 }
Exemplo n.º 6
0
 /// <summary>
 /// End a ServiceStack Request
 /// </summary>
 public static void EndRequest(this HttpResponseBase httpRes, bool skipHeaders = false)
 {
     if (!skipHeaders)
     {
         httpRes.ApplyGlobalResponseHeaders();
     }
     httpRes.Close();
     HostContext.CompleteRequest(null);
 }
Exemplo n.º 7
0
 /// <summary>
 /// End a HttpHandler Request
 /// </summary>
 public static void EndHttpHandlerRequest(this IResponse httpRes, bool skipHeaders = false, bool skipClose = false, Action <IResponse> afterHeaders = null)
 {
     if (!skipHeaders)
     {
         httpRes.ApplyGlobalResponseHeaders();
     }
     afterHeaders?.Invoke(httpRes);
     if (!skipClose && !httpRes.IsClosed)
     {
         httpRes.Close();
     }
     HostContext.CompleteRequest(httpRes.Request);
 }
Exemplo n.º 8
0
        /// <summary>
        /// End a HttpHandler Request
        /// </summary>
        public static void EndHttpHandlerRequest(this IResponse httpRes, bool skipHeaders = false, bool skipClose = false, Action <IResponse> afterHeaders = null)
        {
            //if (!skipHeaders) httpRes.ApplyGlobalResponseHeaders();

            afterHeaders?.Invoke(httpRes);

            var req = httpRes.Request;

            if (req != null && !req.Items.ContainsKey(Keywords.HasLogged))
            {
                HostContext.TryResolve <IRequestLogger>()?.Log(req, req.Dto, httpRes.Dto, TimeSpan.Zero);
            }

            if (!skipClose && !httpRes.IsClosed)
            {
                httpRes.Close();
            }

            HostContext.CompleteRequest(req);
        }
Exemplo n.º 9
0
 /// <summary>
 /// End a ServiceStack Request
 /// </summary>
 public static void EndRequest(this IResponse httpRes, bool skipHeaders = false)
 {
     httpRes.EndHttpHandlerRequest(skipHeaders: skipHeaders);
     HostContext.CompleteRequest();
 }