現在の環境がローカルではないかどうかを確認する必要があるコードの条件があります。!RoleEnvironment.IsEmulated
を使用しましたが、これはAzure関数では機能しませんが、クラウドサービスでは機能します。同じコードがクラウドサービスでも共有されるため、ソリューションはクラウドサービスとAzure関数で機能するはずです。
現在の環境がホスト/デプロイされていないローカルであることを確認するにはどうすればよいですか?
Fabio 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);
}
}
}
実際のランタイムがAzureで実行されているかどうかを識別するために使用するのと同様のアプローチを使用できます: https://github.com/Azure/azure-webjobs-sdk-script/blob/efb55da/src/WebJobs .Script/Config/ScriptSettingsManager.cs#L25
この場合、ランタイムはWEBSITE_INSTANCE_ID
という名前のアプリ設定の存在を確認します
自動的に設定されるAzure_FUNCTIONS_ENVIRONMENT
環境変数を使用できます。
Environment.GetEnvironmentVariable("Azure_FUNCTIONS_ENVIRONMENT"); // set to "Development" locally