Приложение ASP.NET запускается без использования Global.asax - PullRequest
4 голосов
/ 07 октября 2009

Я разрабатываю плагин, как приложение для веб-сайта. Из-за требований он будет находиться по тому же физическому пути и в том же пуле приложений, что и основной веб-сайт, для которого у меня нет исходного кода. Таким образом, они оба используют один и тот же Web.config и некоторые другие зависимости.

Мне нужно установить лицензию для сторонней зависимости при запуске приложения, но у меня нет возможности получить доступ к коду для Global.asax, поскольку этот код принадлежит другой компании.

Итак, есть ли альтернативный способ добавления событий в Application Start без участия Global.asax или это мое единственное решение для наследования / расширения текущего Global.asax?

Ответы [ 2 ]

9 голосов
/ 07 октября 2009

Вы можете использовать HTTPModule:

public class MyModule : IHttpModule
{
    #region IHttpModule Members

    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
        ...
    }

    #endregion
}

web.config

<httpModules>
  <add name="MyModule" type="MyNamespace.MyModule, MyAssembly" />
</httpModules>
2 голосов
/ 14 июня 2013

Вы можете использовать WebActivator, если знаете, что все ваши целевые проекты будут .NET 4.0 или выше.

https://github.com/davidebbo/WebActivator

[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(Bootstrapper), "Start")]

public class Bootstrapper
{
    public static void Start()
    {
        // Put everything in motion here
    }
}

Обратите внимание, что у вас также есть возможность запуска до или после функции Global.asax Application_Start () - этот пример запускается позже.

...