如何使用asp.net mvc-5 c#app中的windows服务发送自动电子邮件

时间:2014-01-15 12:49:11

标签: c# asp.net-mvc windows-services

我正在开发一个asp.net MVC-5网络项目,我必须每天向所有用户发送电子邮件。我知道有两种方法可以达到这个目的:

  1. Windows服务
  2. Sql server agent job。
  3. 我决定使用 Windows服务。我正在使用Visual Studio 2013 for Web的Express版本,因此不存在Windows服务模板。经过深入挖掘后,我在Visual Studio中创建了一个Windows服务作为控制台应用程序。这是代码:

    服务

    public class FirstService : ServiceBase
    {
            public FirstService()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
                this.EventLog.WriteEntry("FirstService Service Has Started");
            }
    
            protected override void OnStop()
            {
                this.EventLog.WriteEntry("FirstService Service Has Stopped");
            }
    
            private void InitializeComponent()
            {
                this.ServiceName = "FirstService";
                this.CanStop = true;
                this.AutoLog = false;
                this.EventLog.Log = "Application";
                this.EventLog.Source = "FirstService";
            }
    }
    

    安装

    [RunInstaller(true)]
    public class MyServiceInstaller : Installer
    {
        private ServiceProcessInstaller FirstServiceProcessInstaller;
    
        private ServiceInstaller FirstServiceInstaller;
    
        public MyServiceInstaller()
        {
            InitializeComponent();
        }
    
        private void InitializeComponent()
        {
            this.FirstServiceProcessInstaller = new ServiceProcessInstaller();
            this.FirstServiceProcessInstaller.Account = ServiceAccount.LocalSystem;
            this.FirstServiceProcessInstaller.Username = null;
            this.FirstServiceProcessInstaller.Password = null;
            this.FirstServiceInstaller = new ServiceInstaller();
            this.FirstServiceInstaller.Description = "FirstService Service Template";
            this.FirstServiceInstaller.DisplayName = "First Service";
            this.FirstServiceInstaller.ServiceName = "FirstService";
            this.FirstServiceInstaller.StartType = ServiceStartMode.Manual;
            this.Installers.AddRange(new Installer[] { this.FirstServiceProcessInstaller, this.FirstServiceInstaller });
        }
    }
    

    主要

    static class Program
    {
        [STAThread]
        static void Main()
        {
            ServiceBase.Run(new FirstService());
        }
    }
    

    在此之后我使用 installutil.exe 成功安装了此服务,并且可以从控制面板 - >成功启动和停止服务。管理工具 - > Serivces 。 一切都很好。

    正如我之前提到的,我想在我的mvc-5应用程序中使用Windows服务向我的应用程序用户发送自动电子邮件,我有一些问题:

    1. 我将如何在我的asp.net mvc-5应用程序中集成Windows服务?
    2. 我如何将应用程序部署到服务器?
    3. 我将如何在我的应用程序托管服务器上安装Windows服务?
    4. 如果可能,请建议我包含该示例的任何好教程。 谢谢!

2 个答案:

答案 0 :(得分:1)

让我建议另外两个选择:

  1. 创建一个控制台应用程序并使用任务计划程序在给定时间调用它。这个选项非常简单。
  2. 使用Quartz.net。如果您使用的是共享主机环境,则此选项可能有效。
  3. 通过在mvc应用程序中集成Windows服务,我不明白你的意思。

    它们是两个不同的进程,因此您需要在进程之间实现任何类型的通信(例如,通过数据库,文件,消息传递等)。

答案 1 :(得分:0)

  1. 您可以使用HTTPWebRequest / WebClient类调用控制器操作,控制器操作会将邮件发送给用户。
  2. 2& 3:您需要按照与本地开发系统中相同的步骤进行操作。

    希望有所帮助