/// <summary> /// Overridable method that can be used to implement a custom hnandler /// </summary> /// <param name="context">The context.</param> /// <exception cref="System.NotImplementedException">Cannot execute handler: + handler + at PathInfo: + httpReq.PathInfo</exception> protected override void ProcessRequest(HttpListenerContext context) { if (string.IsNullOrEmpty(context.Request.RawUrl)) { return; } var operationName = context.Request.GetOperationName(); var httpReq = new HttpListenerRequestWrapper(operationName, context.Request); var httpRes = new HttpListenerResponseWrapper(context.Response); var handler = ServiceStackHttpHandlerFactory.GetHandler(httpReq); var url = context.Request.Url.ToString(); var endPoint = context.Request.RemoteEndPoint; var serviceStackHandler = handler as IServiceStackHttpHandler; if (serviceStackHandler != null) { var restHandler = serviceStackHandler as RestHandler; if (restHandler != null) { httpReq.OperationName = operationName = restHandler.RestPath.RequestType.Name; } serviceStackHandler.ProcessRequest(httpReq, httpRes, operationName); LogResponse(context, url, endPoint); httpRes.Close(); return; } throw new NotImplementedException("Cannot execute handler: " + handler + " at PathInfo: " + httpReq.PathInfo); }
/// <summary> /// Gets the handler. /// </summary> /// <returns>The handler.</returns> /// <param name="context">Context.</param> /// <param name="requestType">Request type.</param> /// <param name="url">URL.</param> /// <param name="pathTranslated">Path translated.</param> public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { var handler = factory.GetHandler(context, requestType, url, pathTranslated); return(handler == null ? null : new SessionHandlerDecorator(handler)); }