.net core 中使用HostService

HostService可以用来初始化数据

  1. 新建一个类继承自BackgroundService
    注意hostservice中服务注入的方式
namespace EFCoreJWT
{
    public class HostServiceDemo : BackgroundService
    {
        private readonly IServiceScopeFactory _scopeFactory;
        private readonly IServiceScope _serviceScope;

        public HostServiceDemo(IServiceScopeFactory scopeFactory)
        {
            _scopeFactory = scopeFactory;
            //通过这个注入DBContext
            _serviceScope = _scopeFactory.CreateScope();
        }


        public override void Dispose()
        {
            base.Dispose();
            _serviceScope.Dispose();
        }

        protected async override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            Console.WriteLine("start");

            MyDbContext myDbContext = _serviceScope.ServiceProvider.GetService<MyDbContext>();

            await Task.Delay(10);
            Console.WriteLine("end");

        }
    }
}

  1. programes注入
builder.Services.AddHostedService<HostServiceDemo>();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Asp.Net Core 使用 MailKit 发送邮件需要以下步骤: 1. 安装 MailKit:在 Visual Studio ,右键单击项目,选择“管理 NuGet 包”,搜索 MailKit 并安装。 2. 在 appsettings.json 文件配置 SMTP 服务器信息: ``` "SmtpSettings": { "Host": "smtp.example.com", "Port": 587, "Username": "your_username", "Password": "your_password" } ``` 3. 创建一个邮件服务类,例如: ``` using MailKit.Net.Smtp; using MailKit.Security; using Microsoft.Extensions.Options; using MimeKit; using System.Threading.Tasks; public class EmailService : IEmailService { private readonly SmtpSettings _smtpSettings; public EmailService(IOptions<SmtpSettings> smtpSettings) { _smtpSettings = smtpSettings.Value; } public async Task SendEmailAsync(string toEmail, string subject, string message) { var email = new MimeMessage(); email.From.Add(new MailboxAddress(_smtpSettings.SenderName, _smtpSettings.SenderEmail)); email.To.Add(new MailboxAddress(toEmail)); email.Subject = subject; var builder = new BodyBuilder(); builder.HtmlBody = message; email.Body = builder.ToMessageBody(); using (var smtp = new SmtpClient()) { await smtp.ConnectAsync(_smtpSettings.Host, _smtpSettings.Port, SecureSocketOptions.StartTls); await smtp.AuthenticateAsync(_smtpSettings.Username, _smtpSettings.Password); await smtp.SendAsync(email); await smtp.DisconnectAsync(true); } } } ``` 4. 在 Startup.cs 文件的 ConfigureServices 方法注册服务: ``` services.Configure<SmtpSettings>(Configuration.GetSection("SmtpSettings")); services.AddTransient<IEmailService, EmailService>(); ``` 5. 在需要发送邮件的地方注入 IEmailService 并调用 SendEmailAsync 方法即可发送邮件。 ``` public class HomeController : Controller { private readonly IEmailService _emailService; public HomeController(IEmailService emailService) { _emailService = emailService; } public IActionResult Index() { return View(); } public async Task<IActionResult> SendEmail(string email) { await _emailService.SendEmailAsync(email, "测试邮件", "这是一封测试邮件。"); return RedirectToAction("Index"); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值