Вот как я реализовал Session в своем проекте ASP .NET CORE:
Создайте фильтр SessionTimeout:
public class SessionTimeout : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.HttpContext.Session == null ||!context.HttpContext.Session.TryGetValue("UserID", out byte[] val))
{
context.Result =
new RedirectToRouteResult(new RouteValueDictionary(new
{
controller = "Pages",
action = "SessionTimeout"
}));
}
base.OnActionExecuting(context);
}
}
Зарегистрируйте этот фильтр в файле Startup.cs:
В вашем методе ConfigureServices:
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(10);
});
В вашем Configure добавьте:
app.UseSession();
И, наконец, украсьте свой класс / метод с помощью фильтра, например:
[SessionTimeout]
public class DashboardController : Controller
[ 1111] Чтобы уничтожить ваш сеанс на основе события выхода из вашего просмотра:
public IActionResult Logout()
{
HttpContext.Session.Clear();
return RedirectToAction("Login", new { controller = "Pages" });
}
спасибо за ваши усилия. После довольно долгого исследования я обнаружил, что просто забыл запустить миграцию (которая установила значение по умолчанию для дельта-столбцов как false). Теперь я должен получить несколько минусовых баллов за такую глупую ошибку. Извините за беспокойство и еще раз спасибо.
Используете ли вы rake ts: conf after для правильной генерации файла конфигурации?
Затем вы можете проверить созданный файл конфигурации, чтобы увидеть, есть ли в файле конфигурации оба SQL-запроса (стандартный и дельта).
Мы используйте его без проблем.
У меня похожая проблема с тем, что дельта-индексация не работает... на самом деле она работает в моей среде, но не в производстве. Меня смущают утверждения в начале сообщения, что значение по умолчанию для дельты должно быть ложным. В thinking sphinx doc по адресу http://freelancing-god.github.com/ts/en/deltas.html говорится, что значение по умолчанию должно быть true:
def self.up
add_column :articles, :delta, :boolean, :default => true,
:null => false
end
Я что-то пропустил?
Спасибо!