我已经检查了一个解决方案,但我似乎没有得到任何指向 asp.net mvc 的信息。基本上,我正在寻找一种解决方案,即在会话到期前一分钟通知用户。
理想的解决方案是倒计时通知,可以选择续订会话。
如果倒数计时器到期而用户没有刷新页面,我需要将它们注销。
我是 JSP 新手。我在一个类中使用了以下代码,该代码实现了HttpSessionListener在会话超时时获取 SESSION OUT:
public void sessionCreated(HttpSessionEvent arg0) {
System.out.print("SESSION Created");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.print("SESSION OUT");
}
Run Code Online (Sandbox Code Playgroud)
我设置web.xml:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)
servlet 等待两分钟多,然后调用sessionDestroyed.
有没有办法强制sessionDestroyed超时?
提前致谢。
我试图检测会话何时结束,然后在我的全局 asax 文件中完成后将用户重定向到主页。
我正在使用我在这里找到的以下代码
global.asax:
protected void Session_Start()
{
if (Context.Session != null)
{
if (Context.Session.IsNewSession)
{
string sCookieHeader = Request.Headers["Cookie"];
if ((null != sCookieHeader) && (sCookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
{
//intercept current route
HttpContextBase currentContext = new HttpContextWrapper(HttpContext.Current);
RouteData routeData = RouteTable.Routes.GetRouteData(currentContext);
//Substitute route Data Token Values for the Area
routeData.DataTokens["area"] = "";
routeData.DataTokens["UseNamespaceFallback"] = true;
//substitute route values
routeData.Values["controller"] = "home";
routeData.Values["action"] = "index";
routeData.Values.Add("timedOut", "true");
//routeData.Values["id"] = "timedOut";
IRouteHandler routeHandler = routeData.RouteHandler;
RequestContext requestContext = new …Run Code Online (Sandbox Code Playgroud) 我只想在 asp.net 3.5 中会话过期时将用户重定向到主页(Default.aspx)。我只是用网络用户控制来做到这一点,但钢它不能完美地工作。所以我只想用 web.config 来做到这一点。
<authentication mode="Forms">
<forms loginUrl="~/SignIn.aspx" protection="All" timeout="2880" path="/" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
该技术适用于 .net 3.5 框架应用程序吗?
最近我创建了一个 asp 经典网页,用户可以用它插入他的工作时间。
其中一个请求是该页面应显示每 10 分钟登录一次的消息。用户在一台机器上进行生产,并且在他旁边有一台计算机,因此用户可能会在小时网页上处于非活动状态 5-60 分钟(甚至更长时间),但他仍然会停留在该页面上。
为了每 10 分钟弹出一次消息,我使用了在 JQuery 中创建的计时器,这一切正常。由于总非活动时间不确定,此人希望会话超时时间较长(24 小时),以便会话状态(登录者)保持很长时间。当用户使用插入小时网页时,他被要求在不同的网页上选择他的用户名,然后设置会话(“用户”)。
为了完成长时间的会话超时,我global.asa在根目录中创建了一个文件,代码如下:
<script language="VBScript" runat="Server">
<!-- METADATA
TYPE="typelib"
UUID="00000200-0000-0010-8000-00AA006D2EA4"
-->
Sub Session_OnStart
' Session timeout in minutes (24 hours)
Session.Timeout = 1420
End Sub
</SCRIPT>
Run Code Online (Sandbox Code Playgroud)
虽然出于某种原因(我计时)超时仍然是默认的 20 分钟..然后我也尝试设置Session.Timeout = 1420:
一种。小时的网页插入和
湾 在选择用户和设置会话的页面中。
不过这没有任何影响。于是我开始研究它并在stackoverflow上发现了一个类似的问题:Classic ASP网站中的会话超时
所以这让我看看我IIS在服务器上的设置,我在那里更改了一些东西。
在网站的应用程序池中,我将其更改Regular Time Interval为0:
接下来,我也改变了Time-Out对24 hours在Session Properties上Services我的网站标签(下Sites):
然而这一切都没有任何影响。它仍然会在 20 分钟后结束会话(至少它会重置我的会话(“用户”)状态。
在插入网页的小时内,会话正在检查如下: …
下面是一个简单的回显服务器。但是如果客户端在 10 秒内没有发送任何内容,我想关闭连接。
import asyncio
async def process(reader: asyncio.StreamReader, writer: asyncio.StreamWriter):
print("awaiting for data")
line = await reader.readline()
print(f"received {line}")
writer.write(line)
print(f"sent {line}")
await writer.drain()
print(f"Drained")
async def timeout(task: asyncio.Task, duration):
print("timeout started")
await asyncio.sleep(duration)
print("client unresponsive, cancelling")
task.cancel()
print("task cancelled")
async def new_session(reader, writer):
print("new session started")
task = asyncio.create_task(process(reader, writer))
timer = asyncio.create_task(timeout(task, 10))
await task
print("task complete")
timer.cancel()
print("timer cancelled")
writer.close()
print("writer closed")
async def a_main():
server = await asyncio.start_server(new_session, port=8088)
await server.serve_forever()
if __name__ == '__main__': …Run Code Online (Sandbox Code Playgroud) 我有超时问题.
首先,即使webconfig中的时间设置为120分钟,服务器上每20分钟发生一次超时.
第二,当超时发生时,它会进入登录页面,这是正确的,但在重新登录时,有时会进入默认页面,有时会进入之前的页面.我希望它每次都进入默认页面.就像它应该删除所有会话和cookie,如果那是问题.
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="~/Default.aspx" name="GUI" slidingExpiration="true" timeout="120" path="/">
</forms>
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
<sessionState mode="InProc" cookieless="false" timeout="120"/>
Run Code Online (Sandbox Code Playgroud)
这就是我的webconfig中的内容.
我访问托管的Web应用程序时遇到此错误(在VS2008 C#ASP.NET 3.5 Framework中)
验证视图状态MAC失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法.AutoGenerate不能在群集中使用.
有趣的是,如果我们在登录过程后继续,则没有问题.如果您登录并在15或20分钟内不执行任何操作,则单击任何菜单...将生成此错误.所以我怀疑它与会话有关.在我的webconfig文件中,我按如下方式编写了会话超时.
<sessionState timeout="15" />
Run Code Online (Sandbox Code Playgroud)
我该如何更正此错误?
我想实现会话超时类的东西JFrame.我的Swing应用程序具有登录身份验证,但在一段时间不活动后没有失效.我有一种方法(想法)这样做,比如检查最后两个连续事件(键或鼠标)的时间戳.我认为必须有一种优雅的方式来实现这一目标.
有没有其他方法这样做?
方案如下:
用户想知道为什么会话在长时间运行请求期间已过期.
如何告诉ASP.NET在请求期间不会使会话过期?(在请求完成后开始计算会话超时.)
更新:解决方案应该没有JavaScript.
session-timeout ×10
c# ×5
asp.net ×4
session ×3
asp.net-mvc ×2
java ×2
.net ×1
asp-classic ×1
iis ×1
iis-7.5 ×1
python ×1
python-3.x ×1
servlets ×1
swing ×1