关于asp.net Global.asax 我在 Application_Start有个定时器、每5分钟执行一次、一段时间后不执行了。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于asp.net Global.asax 我在 Application_Start有个定时器、每5分钟执行一次、一段时间后不执行了。相关的知识,希望对你有一定的参考价值。
我的定时器每5分钟执行一次、为什么过了一段时间(我也不知道多久、我是过了几天后看的)定时器就没执行了、要我重新访问一下页面才可以执行、请问怎么样才能让定时器一直执行只要我不更改就一直执行下去。代码如下
public string[] model;
public string[] jsrid;
string[] week = new string[] ;
System.Timers.Timer objTimer = new System.Timers.Timer();
OracleDataBase odb = new OracleDataBase();
ArrayList al = new ArrayList();
DateTime dt = new DateTime();//发送时间
int jsqTemp = 0;
void Application_Start(object sender, EventArgs e)
//在应用程序启动时运行的代码
string tempSQL = "insert into YW_DXFS(FSLX,JSRID,FSNR) values('1','启动Global','global开始执行')";
odb.InsertOrUpdate(tempSQL);
objTimer.Interval = 30000;
objTimer.Elapsed += new System.Timers.ElapsedEventHandler(objTimer_Elapsed);
objTimer.AutoReset = true;
objTimer.Enabled = true;
objTimer.Start();
void objTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
//这里面做具体操作
如果你的定时操作涉及难以回收的资源,可能会因为资源占用逐步升高最后超载就被停了
如果你的定时操作很重要,则光依赖Application_Start是不够的,需要自己去很多工作来保证容错性 参考技术B 网页程序是无状态的,只有有人访问时才运行
asp.net c# - 设置会话然后通过 global.asax 重定向用户
【中文标题】asp.net c# - 设置会话然后通过 global.asax 重定向用户【英文标题】:asp.net c# - setting session then redirecting users via global.asax 【发布时间】:2017-02-08 02:38:30 【问题描述】:你好,我正在为此努力,我无法理解大多数问题,因为这是我第一次在 ASP.NET 中开发,这是我的问题。 当用户单击登录页面中的提交然后将它们重定向到 somepage.aspx 时,我声明会话变量
if (dt.Rows.Count > 0)
Session["usersId"] = usersId;
Session["usersLevel"] = usersLevel;
Session["usersRegion"] = usersRegion;
Session["notification"] = "";
Response.Redirect("pages/Dashboard.aspx");
所以在那之后我在我的Web.config
中放了一些东西
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<sessionState timeout = "1" mode = "InProc" />
</system.web>
所以会话当然会过期?/超时?然后在我的Global.asax
我放了这个
void Session_End(object sender, EventArgs e)
Response.Redirect("Login.aspx");
但是HttpExeception
上升了,这说明
响应在此上下文中不可用。
为什么没有响应?当它说会话状态模式必须设置为InProc
?我只是希望用户在会话到期/超时时被重定向到该页面(我不知道它们的区别,但对我来说看起来一样)
谢谢
【问题讨论】:
尝试在Session_End
方法中使用HttpContext.Current.Response.Redirect
而不是Response.Redirect
重定向到登录页面。
@TetsuyaYamamoto 不,那行不通。该事件没有响应,因为它不是由请求触发的。
当页面过期时,您不会将用户重定向到登录页面,至少不会从服务器重定向。下次他们发出请求时,您可以根据需要重定向他们,因为这将在请求/响应上下文中。或者,您可以尝试使用 JavaScript 跟踪客户端的会话是否处于活动状态,但这往往会变得混乱。
@mason。石匠的数字,它们是什么意思??
是的@mason 我明白你想说什么。仅使用Global.asax
就不能解决问题吗?我不想每页都放一个条件检查器。
【参考方案1】:
您可以考虑在 AuthenticateRequest 事件中进行重定向。只有 inProc sessionstate 提供程序支持会话结束事件,并且它可能随时发生(即使在相关请求得到响应之后,这就是您看到该异常的原因)。
【讨论】:
以上是关于关于asp.net Global.asax 我在 Application_Start有个定时器、每5分钟执行一次、一段时间后不执行了。的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET:在 global.asax 中未捕获安全异常
asp.net Global.asax Application_Start
ASP.NET 将响应保存到 global.asax 中的文件