diff --git a/SessionSample/Extensions/SessionExtensions.cs b/SessionSample/Extensions/SessionExtensions.cs
deleted file mode 100644
index 8b5035e..0000000
--- a/SessionSample/Extensions/SessionExtensions.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-﻿using System.Text.Json;
-using Microsoft.AspNetCore.Http;
-
-namespace Web.Extensions
-{
-    #region snippet1
-    public static class SessionExtensions
-    {
-        public static void Set<T>(this ISession session, string key, T value)
-        {
-            session.SetString(key, JsonSerializer.Serialize(value));
-        }
-
-        public static T Get<T>(this ISession session, string key)
-        {
-            var value = session.GetString(key);
-            return value == null ? default : JsonSerializer.Deserialize<T>(value);
-        }
-    }
-    #endregion      
-}
-
-namespace Web.Extensions2
-{
-    // Alternate approach
-
-    public static class SessionExtensions
-    {
-        public static void Set<T>(this ISession session, string key, T value)
-        {
-            session.SetString(key, JsonSerializer.Serialize(value));
-        }
-
-        public static bool TryGet<T>(this ISession session, string key, out T value)
-        {
-            var state = session.GetString(key);
-            value = default;
-            if (state == null)
-                return false;
-            value = JsonSerializer.Deserialize<T>(state);
-            return true;
-        }
-    }
-}
\ No newline at end of file
diff --git a/SessionSample/Middleware/HttpContextItemsMiddleware.cs b/SessionSample/Middleware/HttpContextItemsMiddleware.cs
deleted file mode 100644
index 6a8597c..0000000
--- a/SessionSample/Middleware/HttpContextItemsMiddleware.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-﻿using System;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Http;
-
-namespace SessionSample.Middleware
-{
-    #region snippet1
-    public class HttpContextItemsMiddleware
-    {
-        private readonly RequestDelegate _next;
-        public static readonly object HttpContextItemsMiddlewareKey = new Object();
-
-        public HttpContextItemsMiddleware(RequestDelegate next)
-        {
-            _next = next;
-        }
-
-        public async Task Invoke(HttpContext httpContext)
-        {
-            httpContext.Items[HttpContextItemsMiddlewareKey] = "K-9";
-
-            await _next(httpContext);
-        }
-    }
-
-    public static class HttpContextItemsMiddlewareExtensions
-    {
-        public static IApplicationBuilder 
-            UseHttpContextItemsMiddleware(this IApplicationBuilder app)
-        {
-            return app.UseMiddleware<HttpContextItemsMiddleware>();
-        }
-    }
-    #endregion
-}
diff --git a/SessionSample/Models/BasicAuthInitialize.cs b/SessionSample/Models/BasicAuthInitialize.cs
deleted file mode 100644
index c1b2a71..0000000
--- a/SessionSample/Models/BasicAuthInitialize.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-﻿using Apache.Geode.NetCore;
-using System;
-using System.Collections.Generic;
-
-namespace GemFireSessionState.Models
-{
-  public class BasicAuthInitialize : IAuthInitialize
-  {
-    private string _username;
-    private string _password;
-
-    public BasicAuthInitialize(string username, string password)
-    {
-      _username = username;
-      _password = password;
-    }
-
-    public void Close()
-    {
-    }
-
-    public Dictionary<string, string> GetCredentials()
-    {
-      Console.WriteLine("SimpleAuthInitialize::GetCredentials called");
-      var credentials = new Dictionary<string, string>();
-      credentials.Add("security-username", "root");
-      credentials.Add("security-password", "root-password");
-      return credentials;
-    }
-  }
-}
\ No newline at end of file
diff --git a/SessionSample/Models/ErrorViewModel.cs b/SessionSample/Models/ErrorViewModel.cs
deleted file mode 100644
index e67efeb..0000000
--- a/SessionSample/Models/ErrorViewModel.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace SessionSample.Models
-{
-  public class ErrorViewModel
-  {
-  }
-}
diff --git a/SessionSample/Pages/Error.cshtml b/SessionSample/Pages/Error.cshtml
deleted file mode 100644
index 6f92b95..0000000
--- a/SessionSample/Pages/Error.cshtml
+++ /dev/null
@@ -1,26 +0,0 @@
-﻿@page
-@model ErrorModel
-@{
-    ViewData["Title"] = "Error";
-}
-
-<h1 class="text-danger">Error.</h1>
-<h2 class="text-danger">An error occurred while processing your request.</h2>
-
-@if (Model.ShowRequestId)
-{
-    <p>
-        <strong>Request ID:</strong> <code>@Model.RequestId</code>
-    </p>
-}
-
-<h3>Development Mode</h3>
-<p>
-    Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
-</p>
-<p>
-    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
-    It can result in displaying sensitive information from exceptions to end users.
-    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
-    and restarting the app.
-</p>
diff --git a/SessionSample/Pages/Error.cshtml.cs b/SessionSample/Pages/Error.cshtml.cs
deleted file mode 100644
index 3951f71..0000000
--- a/SessionSample/Pages/Error.cshtml.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-
-namespace SessionSample.Pages
-{
-    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
-    public class ErrorModel : PageModel
-    {
-        public string RequestId { get; set; }
-
-        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
-
-        public void OnGet()
-        {
-            RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
-        }
-    }
-}
diff --git a/SessionSample/Pages/Index.cshtml b/SessionSample/Pages/Index.cshtml
deleted file mode 100644
index 3e2c92f..0000000
--- a/SessionSample/Pages/Index.cshtml
+++ /dev/null
@@ -1,72 +0,0 @@
-﻿@page
-@using Microsoft.AspNetCore.Http
-@model IndexModel
-@{
-    ViewData["Title"] = "Session Sample";
-}
-
-<h1>@ViewData["Title"]</h1>
-
-<h2>State management</h2>
-
-<div class="row">
-    <div class="col-md-8">
-        <form method="post">
-            <div class="panel panel-default">
-                <div class="panel-heading">
-                    <button type="submit" asp-page-handler="ChangeAge" class="pull-right btn btn-danger">Change Age</button>
-                    <h3 class="panel-title" style="line-height:2.1">Name and Age</h3>
-                </div>
-                <div class="panel-body">
-                    <p>The name and age are stored in session. Select the <span style="font-weight:bold">Change Age</span> 
-                    button to update the session to a new random age value.</p>
-                    <p>Session values by the model with 
-                    <code>@@Model.&lt;PropertyName&gt;</code>:</p>
-                    <p><b>Name:</b> @Model.SessionInfo_Name <b>Age:</b> @Model.SessionInfo_Age</p>
-                    <hr>
-                    <p>Session values direct </p>
-                     <p><b>Name:</b> @HttpContext.Session.GetString(IndexModel.SessionKeyName) 
-                    <b>Age:</b> 
-                    @HttpContext.Session.GetInt32(IndexModel.SessionKeyAge).ToString()</p>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-md-8">
-        <div class="panel panel-default">
-            <div class="panel-heading">
-                <h3 class="panel-title">HttpContext.Items Middleware Value</h3>
-            </div>
-            <div class="panel-body">
-                <p>The middleware value is set into the <code>HttpContext.Items</code> collection by 
-                the <code>HttpContextItemsMiddleware</code> before Razor Pages processes the request. 
-                The value is retreived by the page and displayed.</p>
-                <p>Value: @Model.SessionInfo_MiddlewareValue</p>
-            </div>
-        </div>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-md-8">
-        <form method="post">
-            <div class="panel panel-default">
-                <div class="panel-heading clearfix">
-                    <button type="submit" asp-page-handler="UpdateSessionDate" class="pull-right btn btn-danger">Update Session Time</button>
-                    <a href="/" class="pull-right btn btn-danger" style="margin-right:5px">Reload Page (No Update)</a>
-                    <h3 class="panel-title" style="line-height:2.1">Session Time</h3>
-                </div>
-                <div class="panel-body">
-                    <p>The session time is stored in session. Select the <span style="font-weight:bold">
-                        Reload Page (No Update)</span> button to display the current time and the time stored in session.
-                    Select the <span style="font-weight:bold">Update Session Time</span> button to store the current time in session.</p>
-                    <p>Current Time: @Model.SessionInfo_CurrentTime</p>
-                    <p>Session Time: @Model.SessionInfo_SessionTime</p>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
diff --git a/SessionSample/Pages/Index.cshtml.cs b/SessionSample/Pages/Index.cshtml.cs
deleted file mode 100644
index 59bf24a..0000000
--- a/SessionSample/Pages/Index.cshtml.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-﻿using System;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.AspNetCore.Mvc.RazorPages;
-using SessionSample.Middleware;
-using Web.Extensions;
-
-namespace SessionSample.Pages
-{
-    #region snippet1
-    public class IndexModel : PageModel
-    {
-        public const string SessionKeyName = "_Name";
-        public const string SessionKeyAge = "_Age";
-        const string SessionKeyTime = "_Time";
-
-        public string SessionInfo_Name { get; private set; }
-        public string SessionInfo_Age { get; private set; }
-        public string SessionInfo_CurrentTime { get; private set; }
-        public string SessionInfo_SessionTime { get; private set; }
-        public string SessionInfo_MiddlewareValue { get; private set; }
-
-        public void OnGet()
-        {
-            // Requires: using Microsoft.AspNetCore.Http;
-            if (string.IsNullOrEmpty(HttpContext.Session.GetString(SessionKeyName)))
-            {
-                HttpContext.Session.SetString(SessionKeyName, "The Doctor");
-                HttpContext.Session.SetInt32(SessionKeyAge, 773);
-            }
-
-            var name = HttpContext.Session.GetString(SessionKeyName);
-            var age = HttpContext.Session.GetInt32(SessionKeyAge);
-    #endregion
-            SessionInfo_Name = name;
-            SessionInfo_Age = age.ToString();
-
-            var currentTime = DateTime.Now;
-
-            #region snippet2
-            // Requires SessionExtensions from sample download.
-            if (HttpContext.Session.Get<DateTime>(SessionKeyTime) == default)
-            {
-                HttpContext.Session.Set<DateTime>(SessionKeyTime, currentTime);
-            }
-            #endregion
-
-            SessionInfo_CurrentTime = currentTime.ToString("H:mm:ss tt");
-            SessionInfo_SessionTime = HttpContext.Session.Get<DateTime>(SessionKeyTime)
-                .ToString("H:mm:ss tt");
-
-            #region snippet3
-            HttpContext.Items
-                .TryGetValue(HttpContextItemsMiddleware.HttpContextItemsMiddlewareKey, 
-                    out var middlewareSetValue);
-            SessionInfo_MiddlewareValue = 
-                middlewareSetValue?.ToString() ?? "Middleware value not set!";
-            #endregion
-        }
-
-        public IActionResult OnPostUpdateSessionDate()
-        {
-            HttpContext.Session.Set<DateTime>(SessionKeyTime, DateTime.Now);
-
-            return RedirectToPage();
-        }
-
-        public IActionResult OnPostChangeAge()
-        {
-            var r = new Random();
-
-            HttpContext.Session.SetInt32(SessionKeyAge, r.Next(500, 1000));
-
-            return RedirectToPage();
-        }
-    }
-}
diff --git a/SessionSample/Pages/Shared/_Layout.cshtml b/SessionSample/Pages/Shared/_Layout.cshtml
deleted file mode 100644
index b761491..0000000
--- a/SessionSample/Pages/Shared/_Layout.cshtml
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>@ViewData["Title"]</title>
-    <style>body{margin:0;padding-bottom:20px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;}h1{font-size:24px;margin:.67em 0;}pre{overflow:auto;}code,pre{font-family:monospace, monospace;font-size:1em;}button,input{margin:0;font:inherit;color:inherit;}button{overflow:visible;}button{text-transform:none;}input{line-height:normal;}{box-sizing:border-box;}:before,*:after{box-sizing:border-box;}input,button{font-family:inherit;font-size:inherit;line-height:inherit;}a{color:#337ab7;text-decoration:none;}h1,h2,h3,h4{font-family:inherit;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;}h3{font-size:16px;}h4{font-size:18px;}p{margin:0 0 10px;}ol{margin-top:0;margin-bottom:10px;}code,pre{font-family:Menlo, Monaco, Consolas, "Courier New", monospace;}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px;}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;-radius:4px;}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0;}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto;}.container{width:800px;}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;background-image:none;border:1px solid transparent;border-radius:4px;;color:#fff;background-color:green;border-color:gray;float:right}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0, 0, 0, .05);}.panel-body{padding:15px;}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px;}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit;}.panel-default{border-color:#ddd;}.panel-default > .panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd;}.clearfix:before,.clearfix:after,.container:before,.container:after,.panel-body:before,.panel-body:after{display:table;content:" ";}.clearfix:after,.container:after,.panel-body:after{clear:both;}.body-content{padding-left:15px;padding-right:15px;}.panel-body{font-size:16px;}</style>
-</head>
-<body>
-    <div class="container body-content">
-        @RenderBody()
-    </div>
-</body>
-</html>
diff --git a/SessionSample/Pages/_ViewImports.cshtml b/SessionSample/Pages/_ViewImports.cshtml
deleted file mode 100644
index f22da06..0000000
--- a/SessionSample/Pages/_ViewImports.cshtml
+++ /dev/null
@@ -1,3 +0,0 @@
-@using SessionSample
-@namespace SessionSample.Pages
-@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
diff --git a/SessionSample/Pages/_ViewStart.cshtml b/SessionSample/Pages/_ViewStart.cshtml
deleted file mode 100644
index a5f1004..0000000
--- a/SessionSample/Pages/_ViewStart.cshtml
+++ /dev/null
@@ -1,3 +0,0 @@
-﻿@{
-    Layout = "_Layout";
-}
diff --git a/SessionSample/Program.cs b/SessionSample/Program.cs
deleted file mode 100644
index 6ab590d..0000000
--- a/SessionSample/Program.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-﻿using Microsoft.AspNetCore;
-using Microsoft.AspNetCore.Hosting;
-
-namespace SessionSample
-{
-    public class Program
-    {
-        public static void Main(string[] args)
-        {
-            CreateWebHostBuilder(args).Build().Run();
-        }
-
-        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
-            WebHost.CreateDefaultBuilder(args)
-                .UseStartup<Startup>();
-    }
-}
diff --git a/SessionSample/Properties/launchSettings.json b/SessionSample/Properties/launchSettings.json
deleted file mode 100644
index 4ebabb5..0000000
--- a/SessionSample/Properties/launchSettings.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "iisSettings": {
-    "windowsAuthentication": false,
-    "anonymousAuthentication": true,
-    "iisExpress": {
-      "applicationUrl": "http://localhost:50795/",
-      "sslPort": 44315
-    }
-  },
-  "profiles": {
-    "IIS Express": {
-      "commandName": "IISExpress",
-      "launchBrowser": true,
-      "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Development"
-      },
-      "nativeDebugging": true
-    },
-    "SessionSample": {
-      "commandName": "Project",
-      "launchBrowser": true,
-      "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Development"
-      },
-      "applicationUrl": "https://localhost:5001;http://localhost:5000"
-    }
-  }
-}
\ No newline at end of file
diff --git a/SessionSample/SessionSample.csproj b/SessionSample/SessionSample.csproj
deleted file mode 100644
index bf84de8..0000000
--- a/SessionSample/SessionSample.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-﻿<Project Sdk="Microsoft.NET.Sdk.Web">
-
-  <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
-    <Platforms>AnyCPU;x64;x86</Platforms>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Steeltoe.Common" Version="3.0.0-m2" />
-    <PackageReference Include="Steeltoe.Common.Abstractions" Version="3.0.0-m2" />
-    <PackageReference Include="Steeltoe.Common.Hosting" Version="3.0.0-m2" />
-    <PackageReference Include="Steeltoe.ConnectorCore" Version="3.0.0-gemfire" />
-    <PackageReference Include="Steeltoe.Extensions.Configuration.CloudFoundryBase" Version="3.0.0-m2" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\NetCore.Session\NetCore.Session.csproj" />
-  </ItemGroup>
-
-
-</Project>
diff --git a/SessionSample/SessionSample.csproj.user b/SessionSample/SessionSample.csproj.user
deleted file mode 100644
index cff74a9..0000000
--- a/SessionSample/SessionSample.csproj.user
+++ /dev/null
@@ -1,6 +0,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ActiveDebugProfile>IIS Express</ActiveDebugProfile>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/SessionSample/SessionSample.sln b/SessionSample/SessionSample.sln
deleted file mode 100644
index 4f6c0fb..0000000
--- a/SessionSample/SessionSample.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-﻿
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30028.174
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SessionSample", "SessionSample.csproj", "{0073CD89-8ED5-42DC-8C0F-88036A11AE91}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Debug|x64 = Debug|x64
-		Release|Any CPU = Release|Any CPU
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Debug|Any CPU.ActiveCfg = Debug|x64
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Debug|Any CPU.Build.0 = Debug|x64
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Debug|x64.ActiveCfg = Debug|x64
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Debug|x64.Build.0 = Debug|x64
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Release|x64.ActiveCfg = Release|x64
-		{0073CD89-8ED5-42DC-8C0F-88036A11AE91}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {EA7D931C-E9EA-4F8A-B4EA-18C5322FC048}
-	EndGlobalSection
-EndGlobal
diff --git a/SessionSample/Startup.cs b/SessionSample/Startup.cs
deleted file mode 100644
index 7cf7c36..0000000
--- a/SessionSample/Startup.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using GemFireSessionState.Models;
-using Apache.Geode.Session;
-using Steeltoe.Connector.GemFire;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Hosting;
-using SessionSample.Middleware;
-using Microsoft.Extensions.Caching.Distributed;
-using System;
-using Apache.Geode.NetCore;
-
-namespace SessionSample
-{
-    #region snippet1
-    public class Startup
-    {
-        public Startup(IConfiguration configuration)
-        {
-            Configuration = configuration;
-        }
-
-        public IConfiguration Configuration { get; }
-        public ILoggerFactory LoggerFactory { get; }
-
-        public void ConfigureServices(IServiceCollection services)
-        {
-          services.AddGemFireConnection(Configuration, typeof(BasicAuthInitialize), loggerFactory: LoggerFactory);
-
-          // TODO: Don't hardcode region name here
-          services.AddSingleton<IDistributedCache>((isp) => new SessionStateCache(isp.GetRequiredService<Cache>(), "SteeltoeDemo", isp.GetService<ILogger<SessionStateCache>>()));
-
-          services.AddSession(options =>
-            {
-                options.IdleTimeout = TimeSpan.FromSeconds(5);
-                options.Cookie.HttpOnly = true;
-                options.Cookie.IsEssential = true;
-            });
-
-           services.AddControllersWithViews();
-           services.AddRazorPages();
-        }
-
-        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
-        {
-            if (env.IsDevelopment())
-            {
-                app.UseDeveloperExceptionPage();
-            }
-            else
-            {
-                app.UseExceptionHandler("/Home/Error");
-                app.UseHsts();
-            }
-            app.UseHttpsRedirection();
-            app.UseStaticFiles();
-            app.UseCookiePolicy();
-
-
-            app.UseHttpContextItemsMiddleware();
-
-            app.UseRouting();
-
-            //app.UseAuthentication();
-            //app.UseAuthorization();
-
-            app.UseSession();
-
-            app.UseEndpoints(endpoints =>
-            {
-                endpoints.MapDefaultControllerRoute();
-                endpoints.MapRazorPages();
-            });
-    }
-  }
-    #endregion
-}
diff --git a/SessionSample/appsettings.Development.json b/SessionSample/appsettings.Development.json
deleted file mode 100644
index 0623a3f..0000000
--- a/SessionSample/appsettings.Development.json
+++ /dev/null
@@ -1,9 +0,0 @@
-﻿{
-  "Logging": {
-    "LogLevel": {
-      "Default": "Debug",
-      "System": "Information",
-      "Microsoft": "Information"
-    }
-  }
-}
diff --git a/SessionSample/appsettings.Production.json b/SessionSample/appsettings.Production.json
deleted file mode 100644
index 8af1e1f..0000000
--- a/SessionSample/appsettings.Production.json
+++ /dev/null
@@ -1,9 +0,0 @@
-﻿{
-  "Logging": {
-    "LogLevel": {
-      "Default": "Error",
-      "System": "Information",
-      "Microsoft": "Information"
-    }
-  }
-}
diff --git a/SessionSample/appsettings.json b/SessionSample/appsettings.json
deleted file mode 100644
index b7c4ed9..0000000
--- a/SessionSample/appsettings.json
+++ /dev/null
@@ -1,8 +0,0 @@
-﻿{
-  "Logging": {
-    "LogLevel": {
-      "Default": "Warning"
-    }
-  },
-  "AllowedHosts": "*"
-}
diff --git a/SessionSample/statArchive-19444.gfs b/SessionSample/statArchive-19444.gfs
deleted file mode 100644
index e772c0e..0000000
--- a/SessionSample/statArchive-19444.gfs
+++ /dev/null
Binary files differ
diff --git a/SessionSample/statArchive-20992.gfs b/SessionSample/statArchive-20992.gfs
deleted file mode 100644
index c9a0640..0000000
--- a/SessionSample/statArchive-20992.gfs
+++ /dev/null
Binary files differ
diff --git a/SessionSample/statArchive-23496.gfs b/SessionSample/statArchive-23496.gfs
deleted file mode 100644
index b9f9ba5..0000000
--- a/SessionSample/statArchive-23496.gfs
+++ /dev/null
Binary files differ
diff --git a/SessionSample/statArchive-23824.gfs b/SessionSample/statArchive-23824.gfs
deleted file mode 100644
index 5122e73..0000000
--- a/SessionSample/statArchive-23824.gfs
+++ /dev/null
Binary files differ
diff --git a/SessionSample/statArchive-25408.gfs b/SessionSample/statArchive-25408.gfs
deleted file mode 100644
index a3b462c..0000000
--- a/SessionSample/statArchive-25408.gfs
+++ /dev/null
Binary files differ
diff --git a/SessionSample/statArchive-4448.gfs b/SessionSample/statArchive-4448.gfs
deleted file mode 100644
index 79aeda7..0000000
--- a/SessionSample/statArchive-4448.gfs
+++ /dev/null
Binary files differ
