如何从计时器触发器获取运行azure函数的主机名?

时间:2019-06-13 18:17:41

标签: c# azure-functions

我有一个计时器触发

private BigDecimal calculateTax(String country, BigDecimal amount) throws Exception {
    switch (country) {
        case "POLAND":
            return new BigDecimal(0.23).multiply(amount);
        case "AUSTRIA":
            return new BigDecimal(0.20).multiply(amount);
        case "CYPRUS":
            return new BigDecimal(0.19).multiply(amount);
        default:
            throw new Exception("Country not supported");
    }
}

还有一个HTTP触发器

    [FunctionName("HeathChecker")]
    public static void Run([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer, ILogger log)
    {
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");


    }

我希望能够获取HTTP触发器运行所在的主机名,因此我可以从计时器触发器中使用HTTP对其进行调用。这可能吗?

3 个答案:

答案 0 :(得分:2)

您可以通过以下方式获得主机名:

Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME")

您可以在Function Kudu(https://sitename.scm.azurewebsites.net)页面中检查值,选择菜单“环境”,其中有WEBSITE_HOSTNAMESERVER_NAME

答案 1 :(得分:1)

我刚刚检查了一下,发现环境变量名称已更改。现在正在做什么:

Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME")

答案 2 :(得分:0)

您还可以从HttpRequest req对象获取主机名:

HostString hostString = req.Host;
string host = hostString.Host;
int? port = hostString.Port;
string fullHost = hostString.Value;