2

我没有看到像我这样的情况,所以这里是:

场景亮点:用户想要一个包含自定义 SMS 警报的系统。该功能的一个组成部分是有一种方法可以根据用户输入识别开始,然后在触发后根据预定义的时间间隔发送带有个性化消息的 SMS。我以前从未使用过 Twilio,并且正在研究实现。

First Pass 解决方案:使用 Twilio 帐户,我指定将通过 GET 接收入站触发警报/SMS 的 .aspx。接收页面在页面加载中声明并实例化我的 SMSAlerter 对象,该对象立即响应第一条 SMS 并启动 System.Timer.Timer。基本的和功能性的。

问题:如果计时器的时间间隔很短,则会继续发送警报。我每隔一分钟测试一次,并成功了。当我进入 10 分钟时,立即发送短信,并在 10 分钟后发送第一条消息,但之后没有任何消息。

我的观察:由于在入站文本之后没有与资源交互,因此如果保留默认 20 分钟,则 Session 超时。增加会话超时不起作用,即使它看起来不正确,因为间隔将是几小时,而不是几分钟。

使用缓存来存储每个新的 SMSAlerter 可能是要走的路。对于创建的任何 SMSAlerter,计划使用大约 12 小时,并在同一用户第二天通知系统时替换为新的 SMSAlerter 对象。有没有更好的办法?我是否过度/不足简化?我现在预计流量不高(数十个用户),但用户的想法很大。

感谢您的意见、建议。我没有包含代码,因为问题是关于设计,而不是语法。

4

1 回答 1

1

我认为您的计时器在原始请求后约 20 分钟超出范围,从而终止了计时器。我有一种感觉,如果你不断刷新 aspx 页面,它就不会发生 - 但显然这并没有多大帮助。

您可以启动一个具有 System.Timers.Timer 对象的新线程,以便它保持活动状态,并且在没有对服务器的后续请求时不会超出范围。但老实说,这不是一个好主意——尽管它可能有助于理解这个问题。

最终,您将需要某种持续运行的服务 - 因为您不想为此依赖应用程序池,所以我建议在后台运行 Windows 服务来处理它,这将是合适的长期解决方案。

希望这可以帮助!

(稍作编辑以使 Windows 服务方面更清晰)

于 2013-03-27T16:53:50.070 回答