自托管 JobHost 时找出托管 Uri

Find out hosting Uri when selfhosting JobHost

我正在尝试使用 Microsoft.Azure.WebJobs 并包括 Http 扩展来自行托管 JobHost,但我似乎无法弄清楚 Uri/port 它托管在什么

这是我的主要方法:

static void Main(string[] args)
{
    var config = new JobHostConfiguration();

    var filter = new LogCategoryFilter();
    filter.DefaultLevel = LogLevel.Trace;

    config.LoggerFactory = new LoggerFactory()
        .AddConsole(filter.Filter);

    var httpExtensionConfiguration = new HttpExtensionConfiguration();
    config.UseHttp(httpExtensionConfiguration);


    if (config.IsDevelopment)
    {
        config.UseDevelopmentSettings();
    }

    var host = new JobHost(config);
    host.RunAndBlock();
}

这是当 运行

时的输出 window

虽然 HTTP 扩展将添加所需的绑定、服务和 HTTP 功能,但它不提供侦听器,因此它不会为您设置主机(它依赖于您需要设置的外部侦听).

对于 Azure Functions 运行时,WebHost 本身就是侦听器。 CLI 使用该实现来启动主机并公开 HTTP 功能。你可以在这里看到这种方法:

https://github.com/Azure/azure-functions-cli/blob/f0e8121c51569d8d0551fbb9bb81fbed5a9ad64c/src/Azure.Functions.Cli/Actions/HostActions/StartHostAction.cs#L102-L112

如果您不想依赖 Script WebHost(CLI 利用了它的许多功能,因此它很有意义),您可以采用更简单的方法,只需在构建主机时直接提供您的应用程序。您可以查看 CLI 提供的 Startup class 以了解如何使用最新位注册和配置事物:

https://github.com/Azure/azure-functions-cli/blob/ff45a85c462c6f1e83e04dcba13da8bcca7099c5/src/Azure.Functions.Cli/Actions/HostActions/StartHostAction.cs#L349-L374

注意:您正在使用的扩展版本以及我共享的代码是预发布的(甚至还没有合并),所以它们是可能会有变化,但这是我们前进的方向。