Example #1
0
        public IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object extraData)
        {
            if (httpContext == null)
            {
                throw new ArgumentNullException("httpContext");
            }

            try
            {
                OwinAppContext appContext = _appAccessor.Invoke();

                if (appContext == null)
                {
                    throw new EntryPointNotFoundException(Resources.Exception_NoOwinEntryPointFound);
                }

                // REVIEW: the httpContext.Request.RequestContext may be used here if public property unassigned?
                RequestContext requestContext  = _requestContext ?? new RequestContext(httpContext, new RouteData());
                string         requestPathBase = _pathBase;
                string         requestPath     = _requestPath ?? httpContext.Request.AppRelativeCurrentExecutionFilePath.Substring(1) + httpContext.Request.PathInfo;

                OwinCallContext callContext = appContext.CreateCallContext(
                    requestContext,
                    requestPathBase,
                    requestPath,
                    callback,
                    extraData);

                try
                {
                    callContext.Execute();
                }
                catch (Exception ex)
                {
                    callContext.AsyncResult.Complete(true, ErrorState.Capture(ex));
                }
                return(callContext.AsyncResult);
            }
            catch (Exception ex)
            {
                var failedAsyncResult = new CallContextAsyncResult(null, callback, extraData);
                failedAsyncResult.Complete(true, ErrorState.Capture(ex));
                return(failedAsyncResult);
            }
        }
        internal OwinCallContext(
            OwinAppContext appContext,
            RequestContext requestContext,
            string requestPathBase,
            string requestPath,
            AsyncCallback cb,
            object extraData)
        {
            _appContext      = appContext;
            _requestContext  = requestContext;
            _requestPathBase = requestPathBase;
            _requestPath     = requestPath;

            AsyncResult = new CallContextAsyncResult(this, cb, extraData);

            _httpContext  = _requestContext.HttpContext;
            _httpRequest  = _httpContext.Request;
            _httpResponse = _httpContext.Response;
        }
Example #3
0
        internal OwinCallContext(
            OwinAppContext appContext,
            RequestContext requestContext,
            string requestPathBase,
            string requestPath,
            AsyncCallback cb,
            object extraData)
        {
            _trace = TraceFactory.Create(TraceName);

            _appContext = appContext;
            _requestContext = requestContext;
            _requestPathBase = requestPathBase;
            _requestPath = requestPath;

            AsyncResult = new CallContextAsyncResult(this, cb, extraData);

            _httpContext = _requestContext.HttpContext;
            _httpRequest = _httpContext.Request;
            _httpResponse = _httpContext.Response;
        }
        internal OwinCallContext(
            OwinAppContext appContext,
            RequestContext requestContext,
            string requestPathBase,
            string requestPath,
            AsyncCallback cb,
            object extraData)
        {
            _appContext = appContext;
            _requestContext = requestContext;
            _requestPathBase = requestPathBase;
            _requestPath = requestPath;

            AsyncResult = new CallContextAsyncResult(this, cb, extraData);

            _httpContext = _requestContext.HttpContext;
            _httpRequest = _httpContext.Request;
            _httpResponse = _httpContext.Response;

            _disconnectWatcher = new DisconnectWatcher(_httpResponse);
        }
Example #5
0
        internal OwinCallContext(
            OwinAppContext appContext,
            RequestContext requestContext,
            string requestPathBase,
            string requestPath,
            AsyncCallback cb,
            object extraData)
        {
            _appContext      = appContext;
            _requestContext  = requestContext;
            _requestPathBase = requestPathBase;
            _requestPath     = requestPath;

            AsyncResult = new CallContextAsyncResult(this, cb, extraData);

            _httpContext  = _requestContext.HttpContext;
            _httpRequest  = _httpContext.Request;
            _httpResponse = _httpContext.Response;

            _disconnectWatcher = new DisconnectWatcher(_httpResponse);
            RegisterForOnSendingHeaders();
        }
Example #6
0
 /// <summary>
 /// Provides an asynchronous process End method when the process ends.
 /// </summary>
 /// <param name="result">
 /// An System.IAsyncResult that contains information about the status of the process.
 /// </param>
 public void EndProcessRequest(IAsyncResult result)
 {
     CallContextAsyncResult.End(result);
 }
Example #7
0
        public IAsyncResult BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, object extraData)
        {
            if (httpContext == null)
            {
                throw new ArgumentNullException("httpContext");
            }

            try
            {
                OwinAppContext appContext = _appAccessor.Invoke();
                Contract.Assert(appContext != null);

                // REVIEW: the httpContext.Request.RequestContext may be used here if public property unassigned?
                RequestContext requestContext = _requestContext ?? new RequestContext(httpContext, new RouteData());
                string requestPathBase = _pathBase;
                string requestPath = _requestPath ?? httpContext.Request.AppRelativeCurrentExecutionFilePath.Substring(1) + httpContext.Request.PathInfo;

                OwinCallContext callContext = appContext.CreateCallContext(
                    requestContext,
                    requestPathBase,
                    requestPath,
                    callback,
                    extraData);

                try
                {
                    callContext.Execute();
                }
                catch (Exception ex)
                {
                    if (!callContext.TryRelayExceptionToIntegratedPipeline(true, ex))
                    {
                        callContext.Complete(true, ErrorState.Capture(ex));
                    }
                }
                return callContext.AsyncResult;
            }
            catch (Exception ex)
            {
                var failedAsyncResult = new CallContextAsyncResult(null, callback, extraData);
                failedAsyncResult.Complete(true, ErrorState.Capture(ex));
                return failedAsyncResult;
            }
        }