【问题标题】:Send emails in background job/scheduled task in asp.net mvc 3在asp.net mvc 3中的后台作业/计划任务中发送电子邮件
【发布时间】:2023-03-18 07:45:01
【问题描述】:

我有一个 ASP.NET MVC 3 Web 应用程序托管在普通主机上,(即,没有自有或虚拟服务器),我希望能够将电子邮件存储在数据库中,并让它们在后台工作中提取和发送。

如果这是我自己的服务器,我会编写一个 Windows 服务来处理这个问题,但有什么方法可以在 Web 应用程序进程中实现/模拟计划任务/后台作业?

【问题讨论】:

  • 您能透露这家托管公司的名称吗?我有一个类似的案例,我想使用调度任务。
  • @Zafrir - 这是 DiscountASP.net

标签: email asp.net-mvc-3 scheduled-tasks


【解决方案1】:

你可以看看Quartz.NET。有一个 blog post 告诉你如何让它在中等信任下运行。

【讨论】:

    【解决方案2】:

    您可以查看这篇文章 (https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/),它解释了如何在不使用 windows 服务的情况下,在 asp.net 或 asp.net mvc 中运行计划任务。

    【讨论】:

    • 嘿 sarvesh,我不久前读过这篇文章,但我有点厌倦了走同样的路。我不知道,如果我从缓存启动的工作中发送数百封电子邮件,我会不会阻塞应用程序?
    • 它不会在您发送电子邮件时保留您的 asp.net 请求。您多久发送一次这些电子邮件?如果您担心服务器上的负载,您可以小批量发送它们吗?
    • @sarvesh:依靠 asp.net 来托管重复执行的代码(根据您提供的文章)是不可靠的 - 如果您的 asp.net 应用程序空闲一段时间(没有用户,没有http请求),它将回收它创建的所有线程并自行回收,直到下一次请求其任何资源。一般来说,cron 或 Quartz.net 是实现 Sergi 想要实现的目标的理想选择。但是在“有限”托管的情况下,唯一真正的选择是使用一种在线服务,该服务根据用户设置的时间表定期向用户的网页或存储过程发出 http 请求。时间
    【解决方案3】:

    您也可以使用工作现金:

     HttpContext.Current.Cache.Add("jobkey",  
                             "jobvalue", null,  
                             DateTime.MaxValue,  
                             TimeSpan.FromSeconds(15), // set the time interval  
                             CacheItemPriority.Default, JobCacheRemoved); 
    

    详情请见this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多