2017-01-23 3 views
0

Я создаю веб-API ASP.NET с использованием .NET 4.5.2. API должен подключиться к рабочему пространству при запуске. У меня есть вопросы о том, когда этот метод Startup.Configuration действительно работает. Кажется, он не запускается, когда я запускаю веб-сайт или пул приложений. Кажется, дождаться, пока в первый раз кто-нибудь попытается получить доступ к веб-сайту. Это верно? Кроме того, кажется, что он запускается снова в случайные моменты. Я видел, как он работал через 2 часа, 4 часа и 16 часов. Это не имеет никакого смысла. Может кто-нибудь прояснить меня, когда эти методы должны работать? Кроме того, если у вас есть предложение о том, чтобы лучше разместить их, учитывая, что я хочу, чтобы это была общая среда для всех подключений и что я хочу, чтобы она запускалась до того, как кто-либо попытается подключиться к API. Возможно, отдельный сервис?Вопросы по запуску ASP.NET Web API

Кроме того, стоит ли смотреть в ASP.NET CORE? Мне не нужно, чтобы он работал на чем-либо, кроме IIS, однако, если есть польза от использования CORE, я нахожусь в точке, где это будет легко переключиться.

public partial class Startup 
{ 
    public Cache GlobalCache; 
    public static PowershellRunspace PSRunspace; 
    public static ActiveDirectory ADObjects = new ActiveDirectory(); 
    public void Configuration(IAppBuilder app) 
    { 
     ConfigureAuth(app); 
     GlobalCache = new Cache(); 
     AppLog log = new AppLog(); 

     log.InfoLog("Starting PowerShell Runspace in Hangfire...", true); 

     GlobalConfiguration.Configuration.UseSqlServerStorage("Hangfire"); 
     BackgroundJob.Enqueue(() => log.InfoLog("Hangfire started!", true)); 
     BackgroundJob.Enqueue(() => ADObjects.Startup(true)); 
     BackgroundJob.Enqueue(() => StaticRunspace.Start()); 

     app.UseHangfireDashboard(); 
     app.UseHangfireServer(); 

    } 
} 

ответ

1

Предполагая, что вы используете это приложение в IIS (а не само-хостинг), применяются следующие правила:

  1. Метод Configuration выполняется один раз в начале приложения.
  2. Приложение запускается лениво (по первому запросу к нему через HTTP/S).
  3. IIS имеет несколько параметров, которые влияют на применение:
    1. праздный тайм-аут. Если приложение не будет доступно через запрос через 20 минут, приложение будет выгружено/выключено. Следующий запрос снова запустится.
    2. Обычный бассейн утилизации. Он сразу же перезапускает приложение, перерабатывая приложение через каждые 1740 минут.

Так что поведение вы видите, вероятно, из-за нечастый доступ приложения, в сочетании с настройками по умолчанию IIS. Если вы хотите просмотреть или настроить параметры, вы можете сделать это, перейдя в IIS, щелкнув правой кнопкой мыши на вашем пуле приложений и выбрав «Дополнительные настройки».

+0

Спасибо, это объясняет все, что я видел. –