我有一个托管服务,每分钟检查一个电子邮件帐户。我也将 MVC 与 Web API 2.1 一起使用。为了让我的托管服务启动,我必须通过调用 API 方法来“唤醒它”。在 Web API 不活动一段时间后,托管服务进入睡眠状态并停止检查电子邮件。就像它正在收集垃圾一样。如何让它持续运行?
将不胜感激。
启动.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info {Title = "CAS API", Version = "v1"});
// Set the comments path for the Swagger JSON and UI.
var xmlFile = $"{Assembly.GetEntryAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
})
.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.WithOrigins(Configuration["uiOrigin"])
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
})
.AddHostedService<EmailReceiverHostedService>()
.Configure<EmailSettings>(Configuration.GetSection("IncomingMailSettings"))
.AddSingleton<IEmailProcessor, MailKitProcessor>()
.AddSingleton<IEmailRepository, EmailRepository>()
...
Run Code Online (Sandbox Code Playgroud)
EmailReceiverHostedService.cs:
using CasEmailProcessor.Options;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using …Run Code Online (Sandbox Code Playgroud) asp.net-core asp.net-core-webapi asp.net-core-2.1 asp.net-core-hosted-services