有什么方法可以将输入连续插入 运行 webjob?

is there any way to insert input to continuously running webjob?

我有一个简单的 webjob 托管在 Azure 上作为一个连续的 运行 工作。

我需要将令牌值作为输入传递,如何使用连续网络作业实现此目的?

static void Main(string[] args)
        {
             try
            {
            Console.WriteLine("Goto Login url" + kite.GetLoginURL());
            Console.WriteLine("Enter request token: ");
            string requestToken = Console.ReadLine();

我不认为使用 webjobs(连续作业)是不可能的,除非你有一些网络服务器 运行 你可以在其中触发请求(例如 sinatra、aspnet core 等)。您需要将 Azure Functions 与 HTTP 触发器结合使用。然后您可以在查询字符串或请求正文中传递令牌并执行您需要执行的操作。

Webjob 是后台服务,因此无论如何您都无法使用 Console.ReadLine() 获取用户输入。由于 WebJob 没有像 Azure Function 这样的 HTTP 触发器,我看到将 message/input 传递给 WebJob 的唯一替代方法是使其成为 event-driven 就像使用 queue trigger and do processing on receiving the queue message. Refer this quick-start guide 来获取详细信息一样。

下面使用 .net core 3.1 和 web job sdk v3。对于旧 sdk 的等效代码,请参考 this.

队列触发作业:

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace WebJobsSDKSample
{
    public class Functions
    {
        public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
        {
            // do stuffs with message
            logger.LogInformation(message);
        }
    }
}

Program.cs

using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;

namespace WebJobsSDKSample
{
    public class Program
    {
        static async Task Main()
        {
          var builder = new HostBuilder();
          builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
            });
          var host = builder.Build();
          using (host)
          {
            await host.RunAsync();
          }
       }
    }
}

您还可以探索一些旧示例 here。但这些使用的是 v1 SDK。