Search code examples
c#.net.net-core.net-5dapr

Dapr app channel not initialized, make sure -app-port is specified if pubsub subscription is required


I am trying to implement subcriber in C# console app using Dapr, but its giving the below error.

Error:

app channel not initialized, make sure -app-port is specified if pubsub subscription is required

Exited App successfully

terminated signal received: shutting down Exited Dapr successfully

Code:

public static void Main(string[] args)
{
    DaprClient _dapr = new DaprClientBuilder().Build();
    _dapr.PublishEventAsync("pubSubName", "topicName", "data");
}

Solution

  • I am able to solve the issue by converting the console app to windows (worker) service.

    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }
    
    public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
    .ConfigureServices((hostContext, services) =>
    {
        services.AddHostedService<MyService>();
    })
    .ConfigureWebHostDefaults((builder) =>
    {
        builder.UseStartup<Startup>();
    });
    
    public  class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDaprClient();
        }
        public void Configure()
        {
        }
    }
    
    public class MyService: BackgroundService
    {
        private readonly DaprClient _dapr;
    
        public PaymentService(DaprClient dapr)
        {
            _dapr = dapr;
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                await _dapr.PublishEventAsync();
                await Task.Delay(1000, stoppingToken);
            }
        }
    }