Как выполнить сервис в Global Session_Start ()

Когда мне приходилось справляться с этой проблемой, чтобы заполнить отсутствующие даты, я на самом деле создал справочную таблицу, в которой содержались все даты, которые мне интересны, и присоединился к таблице данных в поле даты. Это грубо, но это работает.

SELECT DATE(r.date),count(d.date) 
FROM dates AS r 
LEFT JOIN table AS d ON d.date = r.date 
GROUP BY DATE(r.date) 
ORDER BY r.date ASC;

Что касается вывода, я бы просто использовал SELECT INTO OUTFILE вместо генерации CSV вручную. Остается нам не беспокоиться о том, чтобы избежать специальных символов.

0
задан Phoenix 18 January 2019 в 17:24
поделиться

2 ответа

Вы можете создать статическую ссылку на свой распознаватель IoC и использовать ее в Global.asax. Вы даже можете добавить его в Global.asax.cs. Установите это свойство после регистрации контейнера и используйте его из любого места.

public static YourIocResolver IocResolver { get; set; }
0
ответ дан opewix 18 January 2019 в 17:24
поделиться

Из документации по Внедрение зависимостей :

IIocResolver (и IIocManager) также имеют метод расширения CreateScope (определенный в Abp.Dependency. namespace) для безопасного освобождения всех разрешенных зависимостей.

В конце использования блока все разрешенные зависимости автоматически удаляются.

Если вы находитесь в статическом контексте или не можете внедрить IIocManager, в качестве крайней меры вы можете использовать одноэлементный объект IocManager.Instance везде.

Итак, используйте область с IocManager.Instance:

  • using (var scope = IocManager.Instance.CreateScope()) { ... }
    IocManager.Instance.UsingScope(scope => { ... })
protected void Session_Start()
{
    // Starting a session and already authenticated means we have an old cookie
    var existingUser = System.Web.HttpContext.Current.User;
    if (existingUser != null && existingUser.Identity.Name != "")
    {
        IocManager.Instance.UsingScope(scope => // Here
        {
            // Execute app service here.
            var srv = scope.Resolve<SettingsAppService>();
            srv.UpdateItems();
        });
    }
}
0
ответ дан aaron 18 January 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: