我正在开发一个asp.net MVC-5网络项目,我必须每天向所有用户发送电子邮件。我知道有两种方法可以达到这个目的:
我决定使用 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服务向我的应用程序用户发送自动电子邮件,我有一些问题:
如果可能,请建议我包含该示例的任何好教程。 谢谢!
答案 0 :(得分:1)
让我建议另外两个选择:
通过在mvc应用程序中集成Windows服务,我不明白你的意思。
它们是两个不同的进程,因此您需要在进程之间实现任何类型的通信(例如,通过数据库,文件,消息传递等)。
答案 1 :(得分:0)
2& 3:您需要按照与本地开发系统中相同的步骤进行操作。
希望有所帮助