2017-01-23 4 views
0

.NET 4.5.2を使用してASP.NET Web APIを作成しています。 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

ありがとう、それは私が見ているすべてを説明しています。 –