예제 #1
0
 public void Dispose()
 {
     if (_workContextScope != null)
     {
         _workContextScope.Dispose();
     }
 }
예제 #2
0
            public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
            {
                scope = workContextAccessor.CreateWorkContextScope(new HttpContextWrapper(context));
                var shellSettings = scope.Resolve <ShellSettings>();

                if (shellSettings.State == TenantState.Offline)
                {
                    var appDataFolder = scope.Resolve <IAppDataFolder>();
                    var path          = appDataFolder.Combine("Sites", shellSettings.Name, "App_Offline.htm");
                    if (appDataFolder.FileExists(path))
                    {
                        context.Response.WriteFile(appDataFolder.GetVirtualPath(path));
                    }
                    else
                    {
                        if (appDataFolder.FileExists("App_Offline.htm"))
                        {
                            context.Response.WriteFile(appDataFolder.GetVirtualPath("App_Offline.htm"));
                        }
                        else
                        {
                            context.Response.Write("Sorry, our site is undergoing routine maintenance. Please check back with us soon.");
                        }
                    }

                    var asyncResult = new OfflineAsyncResult();
                    return(asyncResult);
                }

                try
                {
                    return(httpAsyncHandler.BeginProcessRequest(context, cb, extraData));
                }
                catch
                {
                    scope.Dispose();
                    throw;
                }
            }
예제 #3
0
 public void Dispose()
 {
     _workContextScope.Dispose();
     _shellContext.Dispose();
 }