Tag: session

无法使用ASP.NET会话状态提供程序连接到Redis服务器

我一直试图用Redis替换ASP.NET Session一段时间了。 使用Redis的Microsoft ASP.NET会话状态提供程序的多个小时没有结果。 我们为Redis提供了本地Sentinel配置。 最初我认为这不起作用,因为提供商不支持Sentinels。 我切换连接字符串以使用主服务器,希望我至少能够建立连接。 依然没有。 我已尝试为此提供程序进行多种配置,并不断收到“无法连接请求”或“其他信息:无法连接到redis服务器;要创建断开连接的多路复用器,请禁用AbortOnConnectFail。UnableToResolvePhysicalConnection on PING“。 以下是我尝试过的一些配置: 尝试#1: 尝试#2: 尝试#3: 我发现这个提供商的文档很少,故障排除一直是个挑战。 与Microsoft提供商相比,我遇到了第三方提供商,并决定尝试使用它。 我能够使用以下配置成功连接Harbour.RedisSessionStateStore : 有了这个想法,Microsoft提供商的连接字符串的正确格式是什么? 我可以更容易地从第一方图书馆获得内部支持,而在这一点上,让这项工作成为一种道德上的胜利。 此外,如果有人知道我如何配置它来命中Sentinel并确定要连接的主实例,我会欢迎博客文章或任何关于该主题的知识分享。 谢谢!

如何在asp.net项目中设置无限会话时间

我正在研究asp.net项目。 如何增加会话超时。 (无限超时)? 或者我可以在IIS服务器上执行此操作。 如果可以,请解释..

C#如何注销Citrix XenApp用户会话?

由于Citrix在其SDK上完全没有文档,因此我在此处记录此文档。 使用C#,如何以编程方式关闭用户会话?

TempData类似于WebForms中的对象 – 仅1个附加请求的会话状态

我想通过会话状态仅为一个请求存储一些对象。 我似乎无法想到一个简单的方法来实现这一目标。 这正是 ASP.NET MVC的TempData对象所做的。 任何人都可以向我提供一个链接或一些如何让一个对象处于会话状态的例子只能存活一个额外的请求吗? 我想,这可以通过制作一个自定义字典对象来实现,该对象存储每个项目的年龄(请求数)。 通过订阅Application_BeginRequest和Application_EndRequest方法,您可以执行所需的对象清理。 这甚至可能有助于创建一个存储X请求数据的对象,而不仅仅是一个。 这是正确的轨道吗?

ASP.NET会话状态在Web.config以及Global.asax中不起作用

我有管理页面,我用它来为我的网站做一些更新工作。 问题是会话将在一分钟或30秒内到期并将注销用户。 我在根文件夹的Web.Config以及Admin文件夹内的Web.Config中设置了Session,但会话很快就会过期。 我把它设置为60分钟,但它只持续30秒或一分钟。 这是我的根文件夹的web.config内容 这是我在Admin文件夹中设置的web.cofing文件 这是我在Session_Start方法下的Global.asax文件中的设置 Session.Timeout=60; 我没有得到会话如此过期如何过期,或者除了会话之外是否还有任何其他原因被注销。

在浏览器中加载虚拟目录名时,会话在AcquireRequestState中为空,但在加载Default.aspx时不为null

我有一个ASP.NET 4.0 WebForms应用程序。 我需要访问HttpContext.Current.Session并在Global.asax中的AcquireRequestState事件(或它后面的事件)中设置一个值,我发现了一种奇特的行为。 假设我在IIS(我的案例中为版本7)中有一个名为Foo的虚拟目录。 在那里我有Default.aspx作为主页。 Global.asax文件示例如下: void Application_AcquireRequestState(object sender, EventArgs e) { HttpContext.Current.Session[“key”] = “value”; } 当我在浏览器中访问http://localhost/Foo/Default.aspx时,它运行正常。 当我访问http://localhost/Foo/我得到一个NullReferenceException ,我在会话中设置值。 唯一的变化是浏览器中的URL。 它们最终会访问同一页面,但框架的行为会有所不同,具体取决于URL是否只包含文件夹名称,还是包含aspx文件。 检查if (HttpContext.Current.Session != null)对我来说不是一个选项,因为我需要在会话中为每个请求设置一个值,这是不可协商的。 IIS中是否存在我缺少的配置设置,或者这是一个错误/被遗忘的function? 另一个问题的答案暗示IIS不会为每种请求加载会话,例如样式表不需要会话。 也许这种情况正在发生,因为IIS无法提前判断该文件夹名称是否会导致执行aspx文件或者是否会提供静态HTML文件? 更新:我甚至尝试重新排序IIS查找的默认文档,以便“default.aspx”位于列表的顶部,例如 Default.aspx的 Default.asp的 Default.htm的 … 我仍然遇到同样的问题。 更新: 事件处理程序只被触发一次,因为它导致NullReferenceException 。 我已经做了一些额外的阅读,我知道ASP.NET会为每个请求触发这些事件,即使对于CSS或JavaScript文件也是如此。 此外,没有为静态文件加载会话对象,因为没有访问会话的代码,因此无需加载对象。 即便如此,第一个请求是对网页的请求,该请求将需要会话,并且会话为空。 @DmytroShevchenko问: 首先添加一个保护检查if (HttpContext.Current.Session != null) ,这样就不会抛出NullReferenceException 。 然后尝试看一下,也许这个事件会被第二次发射,并且会话可用。 修改后的代码 void Application_AcquireRequestState(object sender, EventArgs e) […]

使用Autofac进行Session-per-HttpRequest。 当不通过DependencyResolver访问ISession时,NHProf显示“多会话”警告

我已经使用Autofac成功实现了Session-per-HttpRequest。 我对我的实现不满意,因为我正在通过DependencyResolver而不依赖于AutoFac提供的参数。 如果我依赖AutoFac提供的ISession参数,那么我会收到NHProf的警告,表明正在使用多个Sessions。 如果我通过DependencyResolver ,NHProf的警告会消失,但使用方法对我来说不正确。 我遵循了此处概述的Autofac + MVC4.0指南: https : //code.google.com/p/autofac/wiki/MvcIntegration 我也使用本指南作为参考。 它表明应该可以接受ISession作为构造函数参数: http : //slynetblog.blogspot.com/2011/04/lightweight-nhibernate-and-aspnet-mvc.html 以下是我构建Autofac容器的方法: public class AutofacRegistrations { public static void RegisterAndSetResolver() { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterControllers(Assembly.GetExecutingAssembly()); // Only generate one SessionFactory ever because it is expensive. containerBuilder.Register(x => new NHibernateConfiguration().Configure().BuildSessionFactory()).SingleInstance(); // Everything else wants an instance of Session per […]

模拟会话在MVC 5中不起作用

我正在我的控制器中的Session中存储值正在测试的Action。 我已经阅读了几篇关于如何模拟会话的文章,我正在尝试实现Milox 在unit testing中设置httpcontext当前会话的答案。 但是当我钻进Locals | this | base | HttpContext Locals | this | base | HttpContext 当设置Session变量HttpContext.Session[“BsAcId”] = vM.BusAcnt.Id; Locals | this | base | HttpContext Sessions仍为null并且测试失败,并带有Null ReferenceexceptionHttpContext.Session[“BsAcId”] = vM.BusAcnt.Id; 这是工作生产代码。 vM.BusAcnt.Id返回一个有效的int ,如果我用int值替换它,测试仍然失败,因为Session为null,因此没有值可以存储在其中。 我正在使用MVC5,EF6以及最新版本的xUnit,Moq和Resharper测试运行器。 行动: public ActionResult Details(int id) { var vM = new BusAcntVm(); vM.BusAcnt = _db.BusAcnts.FirstOrDefault(bA => bA.Id == id); if […]

当用户会话到期时,或者请求在302中终止时,如何处理AJAX请求

已经提出了类似的其他问题,但它们并不倾向于处理通用的多用途解决方案。 他们倾向于只处理用户身份validation问题。 有时302对其他情况有效。 那么如何为ajax请求创建通用的302处理程序,同时保持应用程序中任何其他内容的function?

使用Timer进行会话超时

我想用计时器超时,我正在实施一个电子商务项目,我需要当用户在购物车中添加第一个产品时,计时器将启动并且用户在购物车中添加更多产品但是用户没有检查购物车产品。购物车会话超时的特定时间(购物车为空)。 如何实现这一点。