protected void RestoreSession()
        {
            string value = "";

            try
            {
                value = this.Request.Cookies[IN_SESSION_COOKIE_NAME];
            }
            catch (KeyNotFoundException)
            {
                value = "";
            }

            CurrentSession          = new SessionModel();
            CurrentSession["valid"] = false;

            if (String.IsNullOrEmpty(value))
            {
                // Сессия не устанвлена, т.е. пользователь не зарегистрирован
                CurrentSession.GUID = ImportFromAtlcomru.GetGUID();
                // Сделать сессии идентификатор.
                return;
            }
            try
            {
                CurrentSession = activeSessions[value];                 // По идее там будет где-то пользователь.
                object ouser = null;
                CurrentSession["valid"] = CurrentSession.TryGetValue("user", out ouser);
                // Сессия валидна, если оттуда можно вытащить пользователя.
                CurrentSession["valid"] = ouser != null;
                CurrentSession["GUID"]  = value;
                return;
            }
            catch (System.Collections.Generic.KeyNotFoundException)
            {
                // Беспонтовая сессия, нам оно не надо
                // Возвращяем невалидную сессию по умолчанию
                CurrentSession.GUID = ImportFromAtlcomru.GetGUID();
                // Пусть будет беспонтовая анонимная новая сессия.
            }
        }
        public Nancy.Response Render(string templateFile,
                                     object context = null,                                      // Model
                                     object view    = null)                                      // View
        {
            string   templateString = "";
            Template template       = null;

            bool gotCache = false;

            if (Application.USE_TEMPLATE_CACHE)
            {
                gotCache = Application.templateCache.TryGetValue(templateFile, out template);
            }

            // В режиме отладки иногда удобно, если при каждом запросе шаблон заново верстается.
            // Не надо сервак перезапускать при изменении шаблона.

            if (!gotCache)
            {
                string filePath    = Path.Combine(Application.TEMPLATE_LOCATION, templateFile);
                string tempPath123 = Path.Combine(Application.TEMPLATE_LOCATION, "_!123!_").Replace("_!123!_", "");
                Console.WriteLine("Template Path:" + filePath);
                templateString = File.ReadAllText(filePath);
                templateString = templateString.Replace("@TEMPLATEDIR@", tempPath123);                  // Подстановка местораположения шаблонов в текст шаблона.
                template       = new Template(templateString);

                if (Application.USE_TEMPLATE_CACHE)
                {
                    Application.templateCache.Add(templateFile, template);
                }
            }

            var dict = new Dictionary <string, object>();

            if (this.Request != null)
            {
                Request = this.Request;
                dict.Add("request", Request);
            }
            if (context != null)
            {
                dict.Add("model", context);
            }

            if (view == null)
            {
                throw new RenderException("null view");
            }

            dict.Add("view", view);
            dict.Add("application", Application.APPLICATION);
            dict.Add("appview", new ApplicationView(Application.APPLICATION, CurrentSession));

            object       omessage = null;
            MessageModel message  = null;
            bool         bmsg     = CurrentSession.TryGetValue("message", out omessage);

            if (!bmsg)
            {
                message = new MessageModel();                 // Пустое сообщение.
            }
            else
            {
                message = (MessageModel)omessage;
            }

            IAgent user  = null;
            object ouser = null;
            bool   buser = CurrentSession.TryGetValue("user", out ouser);

            if (!buser)
            {
                user = new InvalidUser();
            }
            else
            {
                user = (IAgent)ouser;
            }

            dict.Add("message", message);
            dict.Add("user", user);
            dict.Add("nothing", "");

            string result = template.Render(dict);

            CurrentSession.Remove("message");
            return(InSession(result));
        }