.net核心Web应用程序并从Azure事件中心读取数据

时间:2018-12-18 20:44:59

标签: c# azure web-applications .net-core azure-eventhub

我正在尝试从Azure事件中心接收数据,并使用signalR在.NET Core 2.1 Web App上显示它们。我已经按照本教程https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-receive-eph进行了操作,所有内容都可以在.net核心控制台应用程序上使用。但是我一直坚持如何在Web应用程序中实现这一点。我仍然是Web应用程序的新手,所以也许我的问题很琐碎。 这是主要的网络应用代码

        public static void Main(string[] args)
    {

        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();

教程中负责部署事件处理器的代码的一部分位于MainAsync(string [] args)

        private static async Task MainAsync(string[] args)
    {
        Console.WriteLine("Registering EventProcessor...");
        var eventProcessorHost = new EventProcessorHost(
            EventHubName,
            PartitionReceiver.DefaultConsumerGroupName,
            EventHubConnectionString,
            StorageConnectionString,
            StorageContainerName);

        // Registers the Event Processor Host and starts receiving messages
        await eventProcessorHost.RegisterEventProcessorAsync<SimpleEventProcessor>();

        Console.WriteLine("Receiving. Press ENTER to stop worker.");
        Console.ReadLine();

        // Disposes of the Event Processor Host
        await eventProcessorHost.UnregisterEventProcessorAsync();
    }

这是我的问题。如何运行MainAsync和运行Web应用程序?如果我这样做

        public static void Main(string[] args)
    {
        MainAsync(args);
        CreateWebHostBuilder(args).Build().Run();

    }

一切都可以编译,但是事件中心中有新事件时什么也没发生,我不知道为什么以及如何解决这个问题

1 个答案:

答案 0 :(得分:0)

对于Web应用程序,情况有所不同。有几种方法可以做到这一点。

1)如果将应用程序托管在Azure App服务中,则创建一个Web作业。

2)您利用天蓝色事件网格。您需要在.Net Core中创建将接收事件的Web挂钩(控制器)。事件中心将事件发送到Web挂钩(事件中心使用事件网格来执行此操作)。您在事件中心中创建Web钩子,并在其中提供控制器URL。

3)您的应用程序订阅了事件。我还没有看到具体的示例,但是这个示例可能会给您提示。 https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/subscribe-events