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); } }
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); }
/// <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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// End a ServiceStack Request /// </summary> public static void EndRequest(this IResponse httpRes, bool skipHeaders = false) { httpRes.EndHttpHandlerRequest(skipHeaders: skipHeaders); HostContext.CompleteRequest(); }