2017-06-01 3 views
1

長いタスクを実行している「常にオン」のasp.net Webアプリケーションがあります。このタスクを同時に2回以上実行するのを避けるため、タスクの開始時にフラグがデータベースに設定されます。このタスクが強制的にシャットダウンされると、フラグは削除されず、手動による介入なしにタスクが再び実行されることはありません。Asp.net WebアプリケーションがAzureでリサイクルされると、

ウェブサイトのリサイクルの概念がアズールに存在するかどうかを探していましたが、それについてはあまり見つけられませんでした。私は例えばhttps://stackoverflow.com/a/21841469/1081568を見つけましたが、これは決してリサイクルされていないようですが、ランダムにリサイクルする「常にオン」の設定のウェブアプリケーションについて不満を感じている人がいます。

アプリがAzureでどのような状況でリサイクル/シャットダウンできるのかを知りたいですか?メンテナンスのためだけですか? Azureリサイクルasp.net websアプリ?または、構内サーバーを除くコンセプトですか?

もう1つの質問は、このシャットダウン/リサイクルをAzureから取得し、実行中のタスクを正常に停止する方法ですか?あなたは、「常にオン」でWebアプリケーションを設定している場合

おかげ

+1

場合は、Webアプリケーションでそれを入れていません。それは他のどこかより安定しています。 – mason

+1

@Masonは完全に同意しますが、私も好奇心のためにこれを求めています。このコンセプトが存在する場合、紺碧でリサイクルがどのように機能するかを理解する。 –

答えて

1

は、私の知る限りでは、通常、紺碧、あなたのWebアプリケーションのリソースを再利用しません。

ウェブアプリの「常時オン」設定がオフの場合、Webサイトは、非アクティブ(20分)後にリサイクルされます。

また、このシャットダウン/リサイクルをAzureから取得し、実行中のタスクを正常に停止する方法はありますか?

あなたの説明によると、現在のWebアプリケーションのprocessidを取得するためのkudu restapiリクエストを送信することができます。

アプリケーションを再起動すると、processidが変更されます。 processidを比較することで、このWebアプリをリサイクルすることができます。

現在のWebアプリケーションのprocessidをを取得する方法について

詳細、あなたが手順以下を参照できます。

1.Set以下のようにあなたの紺碧のWebアプリケーションで展開資格情報:

注意:ユーザーを覚えておいてください名とパスワード、我々は、プロセス情報を取得するために、以下のURLリクエストに

enter image description here

アクセストークン2.Sendを生成するためにそれらを使用します。

URL:https://yourwebsitename.scm.azurewebsites.net/api/processes

コードサンプル:

string url = @"https://yourwebsitename.scm.azurewebsites.net/api/processes"; 

      var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); 

      httpWebRequest.Method = "GET"; 
      httpWebRequest.ContentLength = 0; 

      string logininforation = "username:password"; 

      byte[] byt = System.Text.Encoding.UTF8.GetBytes(logininforation); 
      string encode = Convert.ToBase64String(byt); 


      httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " + encode); 


      using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse()) 
      { 
       using (System.IO.StreamReader r = new System.IO.StreamReader(response.GetResponseStream())) 
       { 
        string jsonResponse = r.ReadToEnd(); 

        dynamic result = JsonConvert.DeserializeObject(jsonResponse); 

        dynamic resultList = result.Children(); 

        foreach (var item in resultList) 
        { 
         Console.WriteLine(item.name + " : " + item.id); 
        } 
       } 
      } 

結果:

enter image description here

ます。また、ポータルでprocessidをを見つけることができます。

は、あなたのWebアプリを選択 - >プロセスエクスプローラは

画像:それはリサイクル持つことは問題があるenter image description here

関連する問題