【问题标题】:Trigger event automatically once per 24h / per user in ASP .NET Application在 ASP .NET 应用程序中每 24 小时/每个用户自动触发一次事件
【发布时间】:2012-02-13 10:35:52
【问题描述】:

如果我想为登录的用户启动特定的代码片段,我有哪些解决方案选择,但不会比每天一次更频繁(它可以在未来更改为每次运行一次不过6小时)。我虽然关于设置一个 cookie 来存储上次启动代码的日期,但是当引发请求启动事件时,我仍然必须在 global.asax 中的每个请求中检查该 cookie 的值。还有其他更有效的解决方案吗?

啊,而且那个事件结果是特定的 JavaScript 代码被渲染到用户的页面。所以当事件启动时我需要 HttpResponse 实例。

谢谢,帕维尔

【问题讨论】:

  • 只是在谈论将启动此代码的 Web 项目,还是您有其他进程可以处理此问题?
  • Cronjobs 或他们的 windows 挂件浮现在脑海中。我不建议在每次加载页面时检查条件,因为它会产生开销。但要真正帮助您,我们需要知道您每天要采取哪些行动!这些操作是与客户端交互还是只是服务器端操作?
  • 我在下面的评论中添加了一些附加信息 - 因为此操作将利用 HTML5 GeoLocation API,必须在浏览器中启动 - 我的第一个想法是在请求处理程序时呈现适当的 javascript。但是下面的 rangitatanz 想法 + 讨论似乎满足了我的需求。

标签: c# asp.net


【解决方案1】:

quartz.net 浮现在脑海中(可能对你来说有点过头了,但值得一看)

Quartz.NET 是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。

http://quartznet.sourceforge.net/

【讨论】:

    【解决方案2】:

    您可以使用您的 cookie 和一个 restful ajax 调用(返回服务器检查更改)。使用 HTTP 缓存确保它每 24 小时至少发生一次(因此将缓存设置为 +24 小时)。

    每次结果完成时都会显示新文本。存储一个变量 guid 或其他东西,以确保不会显示相同的两次。

    【讨论】:

    • 基本上我想要实现的是每 n 小时向服务器发送一次带有用户位置 (stackoverflow.com/questions/8914580/…) 的 HTTP 请求,以便将其存储。所以我想我会在我的小部件中编写 JavaScript 来进行 RESTfull 调用,正如你所写的那样......你能否详细说明一下 HTTP 缓存以及如何使用它,我不明白吗?
    • 权利,然后我得到你。只需设置超时并拨打电话即可。您可以拨打服务server.com/<userid>/location/set?location=<blahblah>。要了解有关 setTimeout 的信息,请查看 w3schools.com/jsref/met_win_settimeout.asp 以了解有关使用 JQuery 进行 html 调用的信息,请参阅 api.jquery.com/jQuery.post
    • 构建您自己的网址或您需要做的任何事情。您可以使用您的 cookie 数据来确定它是否在您网站的页面加载时被发送,这样当用户回来时,他们可以再次发送它。
    • 我想我可以不用计时器,如果在调用 $(document).ready 时执行发送请求的代码(如果需要),它将满足我的需求。实际上,每 24 小时发出一次请求并不一定要准确,因为用户不会一直在应用程序上打开他们的浏览器。谢谢!
    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多