Мы пытаемся удалить global.asax из наших многочисленных веб-приложений в пользу HttpModules, которые находятся в общей кодовой базе. Это работает очень хорошо для многих событий приложения, таких как BeginRequest и PostAuthentication, но в HttpModule нет события запуска приложения.
Я могу придумать пару вонючих способов преодолеть этот дефицит. Например, я, вероятно, могу сделать это:
protected virtual void BeginRequest(object sender, EventArgs e)
{
Log.Debug("Entered BeginRequest...");
var app = HttpContext.Current.Application;
var hasBeenSet app["HasBeenExecuted"] == null ? false : true;
if(!hasBeenSet)
{
app.Lock();
// ... do app level code
app.Add("HasBeenExecuted", true);
app.Unlock();
}
// do regular begin request stuff ...
}
Но мне это плохо пахнет.
Каков наилучший способ вызова логики начала приложения, не имея global.asax?