2017-07-11 3 views
2

現在の環境がlocal.iでないかどうかを確認する必要があるコードには条件があります。!RoleEnvironment.IsEmulatedを使用しました。これはAzure関数では動作しませんが、クラウドサービスで動作します。クラウドサービスでも同じコードが共有されるため、ソリューションはクラウドサービスと青空関数で動作するはずです。Azure機能がローカル環境で実行されていることを確認する方法はありますか? Azure関数で `RoleEnvironment`が動作しない

現在の環境をローカルで確認できますか?

あなたはそれがAzureの上で実行されているかどうかを識別するために、実際のランタイムが使用するものと同様のアプローチを使用することができます
+0

RoleEnvironmentは、クラウドサービスのためにのみ使用可能です。あなたがしようとすることの1つは、関数プロジェクトに 'Microsoft.WindowsAzure.ServiceRuntime'の参照を追加することです。 –

+0

@GauravMantri:これは動作していません。エラーをスローします。 'ロール環境は初期化されていません。 ' –

+0

これは私が恐れていたものです。私はコードをリファクタリングしてこれをあなたのメソッドのパラメータとして渡すことしかできないと思います。関数コードからfalseを渡します。クラウドサービスコードから、RoleEnvironmentメンバー値の実際の値を渡します。 –

答えて

0

ファビオCavalcanteによって回答に基づいて、ここに(ローカルまたはホストされている)現在実行中の環境をチェックする作業Azureの機能は次のとおりです。

using System.Net; 
using System.Net.Http; 
using System.Threading.Tasks; 
using Microsoft.Azure.WebJobs; 
using Microsoft.Azure.WebJobs.Extensions.Http; 
using Microsoft.Azure.WebJobs.Host; 
using System; 

namespace AzureFunctionTests 
{ 
    public static class WhereAmIRunning 
    { 
     [FunctionName("whereamirunning")] 
     public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log) 
     { 
      bool isLocal = string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID")); 

      string response = isLocal ? "Function is running on local environment." : "Function is running on Azure."; 

      return req.CreateResponse(HttpStatusCode.OK, response); 
     } 
    } 
} 
関連する問題