Прежде всего, контроллеры создаются для каждого вызова (или для каждого HTTP-запроса). Вы не должны поддерживать какое-либо состояние, вводя stati c свойства, поля или методы внутри контроллеров.
В вашем случае я бы создал класс обслуживания ServiceSignUp
, который состоит из метода CreateOnSignUp
.
public interface IServiceSignUp
{
async Task CreateOnSignUp(TicketReceivedContext ticketReceivedContext);
}
public class ServiceSignUp : IServiceSignUp
{
public async Task CreateOnSignUp(TicketReceivedContext ticketReceivedContext)
{
....
}
}
Затем зарегистрируйте их во встроенном контейнере Io C, например services.AddSingleton<IServiceSignUp, ServiceSignUp>();
В методе ConfigureServices()
внутри класса StartUp
:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IServiceSignUp, ServiceSignUp>();
services.AddAuthentication(options =>
...
.AddOpenIdConnect("Auth0", options =>
{
options.Scope.Add("openid");
...
options.Events = new OpenIdConnectEvents
{
OnTicketReceived += ServiceSignUp.CreateOnSignUp,
...
};
});
}