protected override async Task HandleSignOutAsync(SignOutContext signOutContext)
        {
            // Process the request cookie to initialize members like sessionKey.
            var ticket = await EnsureCookieTicket();

            var cookieOptions = BuildCookieOptions();

            if (Options.SessionStore != null && sessionKey != null)
            {
                await Options.SessionStore.RemoveAsync(sessionKey);
            }

            var context = new SidSigningOutContext(
                Context,
                Options,
                new AuthenticationProperties(signOutContext.Properties),
                cookieOptions);

            await Options.Events.SigningOut(context);

            Options.CookieManager.DeleteCookie(
                Context,
                Options.CookieName,
                context.CookieOptions);

            ApplyHeaders(context.Properties);
        }
 /// <summary>
 /// Implements the interface method by invoking the related delegate method.
 /// </summary>
 /// <param name="context"></param>
 public virtual Task SigningOut(SidSigningOutContext context) => OnSigningOut(context);