How to check Azure function is running on local environment? `RoleEnvironment` is not working in Azure Functions

后端 未结 3 1724
庸人自扰
庸人自扰 2021-01-04 00:19

I have a condition in code where i need to check if current environment is not local.i have used !RoleEnvironment.IsEmulated, now this is not working in Azure

相关标签:
3条回答
  • 2021-01-04 01:08

    You can use an approach similar to what the actual runtime uses to identify whether it is running on Azure: https://github.com/Azure/azure-webjobs-sdk-script/blob/efb55da/src/WebJobs.Script/Config/ScriptSettingsManager.cs#L25

    In this case, the runtime checks for the presence of an app setting named WEBSITE_INSTANCE_ID

    0 讨论(0)
  • 2021-01-04 01:13

    Based on answer by Fabio Cavalcante, here is a working Azure function that checks the current running environment (local or hosted):

    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);
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-04 01:18

    You can use the AZURE_FUNCTIONS_ENVIRONMENT environment variable, which is set automatically in local development:

    Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT"); // set to "Development" locally
    

    Note that when deployed/published (i.e. Azure), you'd need to set the environment variable yourself (e.g. function app settings in Azure).

    0 讨论(0)
提交回复
热议问题