diff --git a/src/Web/Catalog.WebForms/Catalog.WebForms/Catalog.WebForms.csproj b/src/Web/Catalog.WebForms/Catalog.WebForms/Catalog.WebForms.csproj
index 5661b2fdb..06bd309ca 100644
--- a/src/Web/Catalog.WebForms/Catalog.WebForms/Catalog.WebForms.csproj
+++ b/src/Web/Catalog.WebForms/Catalog.WebForms/Catalog.WebForms.csproj
@@ -221,6 +221,7 @@
     
     
     
+    
     
     
     
diff --git a/src/Web/Catalog.WebForms/Catalog.WebForms/Default.aspx.cs b/src/Web/Catalog.WebForms/Catalog.WebForms/Default.aspx.cs
index bd222c5af..ee4efea3b 100644
--- a/src/Web/Catalog.WebForms/Catalog.WebForms/Default.aspx.cs
+++ b/src/Web/Catalog.WebForms/Catalog.WebForms/Default.aspx.cs
@@ -18,6 +18,13 @@ namespace Microsoft.eShopOnContainers.Catalog.WebForms
 
         private ICatalogService catalog;
 
+        protected _Default() { }
+
+        public _Default(ICatalogService catalog)
+        {
+            this.catalog = catalog;
+        }
+
         protected override void OnLoad(EventArgs e)
         {
             RegisterAsyncTask(new PageAsyncTask(LoadCatalogDataAsync));
@@ -27,14 +34,9 @@ namespace Microsoft.eShopOnContainers.Catalog.WebForms
 
         private async Task LoadCatalogDataAsync()
         {
-            var container = Application.Get("container") as IContainer;
-            using (scope = container?.BeginLifetimeScope())
-            {
-                catalog = container?.Resolve();
-                var collection = await catalog?.GetCatalogAsync();
-                catalogList.DataSource = collection;
-                catalogList.DataBind();
-            }
+            var collection = await catalog?.GetCatalogAsync();
+            catalogList.DataSource = collection;
+            catalogList.DataBind();
         }
 
         protected void Page_Load(object sender, EventArgs e)
diff --git a/src/Web/Catalog.WebForms/Catalog.WebForms/Global.asax.cs b/src/Web/Catalog.WebForms/Catalog.WebForms/Global.asax.cs
index 48e1d8dbc..f0e204417 100644
--- a/src/Web/Catalog.WebForms/Catalog.WebForms/Global.asax.cs
+++ b/src/Web/Catalog.WebForms/Catalog.WebForms/Global.asax.cs
@@ -1,14 +1,7 @@
-using Autofac;
-using eShopOnContainers.Core.Services.Catalog;
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System;
 using System.Web;
-using System.Web.Configuration;
 using System.Web.Optimization;
 using System.Web.Routing;
-using System.Web.Security;
-using System.Web.SessionState;
 
 namespace Microsoft.eShopOnContainers.Catalog.WebForms
 {
@@ -21,21 +14,6 @@ namespace Microsoft.eShopOnContainers.Catalog.WebForms
             RouteConfig.RegisterRoutes(RouteTable.Routes);
             BundleConfig.RegisterBundles(BundleTable.Bundles);
 
-            // Register Containers:
-            var settings= WebConfigurationManager.AppSettings;
-            var useFake = settings["usefake"];
-            bool fake = useFake == "true";
-            var builder = new ContainerBuilder();
-            if (fake)
-            {
-                builder.RegisterType()
-                    .As();
-            } else {
-                builder.RegisterType()
-                    .As();
-            }
-            var container = builder.Build();
-            Application.Add("container", container);
         }
     }
 }
\ No newline at end of file
diff --git a/src/Web/Catalog.WebForms/Catalog.WebForms/Modules/AutoFacHttpModule.cs b/src/Web/Catalog.WebForms/Catalog.WebForms/Modules/AutoFacHttpModule.cs
new file mode 100644
index 000000000..d0d7a60e9
--- /dev/null
+++ b/src/Web/Catalog.WebForms/Catalog.WebForms/Modules/AutoFacHttpModule.cs
@@ -0,0 +1,84 @@
+using Autofac;
+using eShopOnContainers.Core.Services.Catalog;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Configuration;
+using System.Web.UI;
+
+namespace Microsoft.eShopOnContainers.Catalog.WebForms.Modules
+{
+    // Using DI with WebForms is not yet implemented.
+    // This implementation has been adapted from this post:
+    // https://blogs.msdn.microsoft.com/webdev/2016/10/19/modern-asp-net-web-forms-development-dependency-injection/
+
+    public class AutoFacHttpModule : IHttpModule
+    {
+        private static IContainer Container => lazyContainer.Value;
+
+        private static Lazy lazyContainer = new Lazy(() => CreateContainer());
+
+        private static IContainer CreateContainer()
+        {
+            // Configure AutoFac:
+            // Register Containers:
+            var settings = WebConfigurationManager.AppSettings;
+            var useFake = settings["usefake"];
+            bool fake = useFake == "true";
+            var builder = new ContainerBuilder();
+            if (fake)
+            {
+                builder.RegisterType()
+                    .As();
+            }
+            else
+            {
+                builder.RegisterType()
+                    .As();
+            }
+            var container = builder.Build();
+            return container;
+        }
+
+        public void Dispose()
+        {
+            Container.Dispose();
+        }
+
+        public void Init(HttpApplication context)
+        {
+            context.PreRequestHandlerExecute += (_, __) => InjectDependencies();
+        }
+
+        private void InjectDependencies()
+        {
+            if  (HttpContext.Current.CurrentHandler is Page)
+            {
+                var page = HttpContext.Current.CurrentHandler as Page;
+                // Get the code-behind class that we may have written
+                var pageType = page.GetType().BaseType;
+
+                // Determine if there is a constructor to inject, and grab it
+                var ctor = (from c in pageType.GetConstructors()
+                            where c.GetParameters().Length > 0
+                            select c).FirstOrDefault();
+
+                if (ctor != null)
+                {
+                    // Resolve the parameters for the constructor
+                    var args = (from parm in ctor.GetParameters()
+                                select Container.Resolve(parm.ParameterType))
+                                .ToArray();
+
+                    // Execute the constructor method with the arguments resolved 
+                    ctor.Invoke(page, args);
+                }
+
+                // Use the Autofac method to inject any properties that can be filled by Autofac
+                Container.InjectProperties(page);
+
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Web/Catalog.WebForms/Catalog.WebForms/Web.config b/src/Web/Catalog.WebForms/Catalog.WebForms/Web.config
index 9da53af59..47ad4e633 100644
--- a/src/Web/Catalog.WebForms/Catalog.WebForms/Web.config
+++ b/src/Web/Catalog.WebForms/Catalog.WebForms/Web.config
@@ -20,6 +20,8 @@
     
     
       
+      
+      
     
   
   
@@ -39,6 +41,8 @@
     
       
       
+      
+