예제 #1
0
        /// <summary>
        /// Запускает асинхронный вызов обработчика НТТР.
        /// </summary>
        /// <returns>
        /// Объект <see cref="T:System.IAsyncResult"/>, содержащий сведения о состоянии процесса.
        /// </returns>
        /// <param name="context">Объект <see cref="T:System.Web.HttpContext"/>, предоставляющий ссылки на внутренние серверные объекты (например, Request, Response, Session и Server), которые используются для обслуживания HTTP-запросов. </param><param name="cb">Метод <see cref="T:System.AsyncCallback"/>, который вызывается после завершения асинхронного вызова метода.Если значение параметра <paramref name="cb"/> равно null, делегат не вызывается.</param><param name="extraData">Любые дополнительные данные, необходимые для обработки запроса. </param>
        public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {
            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            //context.Response.ContentType = "text/plain";

            //context.Response.Write("<p>Begin IsThreadPoolThread is " + Thread.CurrentThread.IsThreadPoolThread + "</p>\r\n");
            AsyncFile uploader = null;

            MembershipUser mu = Membership.GetUser();

            if (mu != null)
            {
                uploader = new AsyncFile(context, cb, extraData, (Guid)mu.ProviderUserKey);
                uploader.StartAsyncWork();
            }
            else
            {
                context.Response.Write("You are not logged!");
            }

            return(uploader);
        }