尝试侦听Azure事件中心时发生未经授权的错误

尝试侦听Azure事件中心时发生未经授权的错误,azure,azure-eventhub,Azure,Azure Eventhub,我有一个简单的EventHub侦听器示例代码,尝试侦听EventHub public class Program { private const string EventHubConnectionString = "Endpoint=sb://fake.servicebus.windows.net/;SharedAccessKeyName=SendETB;SharedAccessKey=JcvVeX5KsGHfJkPNmdns5jvNYVpB9Wc05jDuMaV3NW8=";

我有一个简单的EventHub侦听器示例代码,尝试侦听EventHub

public class Program
{



    private const string EventHubConnectionString = "Endpoint=sb://fake.servicebus.windows.net/;SharedAccessKeyName=SendETB;SharedAccessKey=JcvVeX5KsGHfJkPNmdns5jvNYVpB9Wc05jDuMaV3NW8=";
    private const string EventHubName = "myhub";
    private const string StorageContainerName = "my-own-container";
    private const string StorageAccountName = "mystorage";
    private const string StorageAccountKey = "fakeZn8WUV1mcsh0MVbmea/ypxDs+No2tzrhr0kUmjxvA0a0jUxfZ29hHoY/yopVvGLEn/stEQbBEAyjYMX9g==";



    private static readonly string StorageConnectionString = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", StorageAccountName, StorageAccountKey);

    public static void Main(string[] args)
    {
        MainAsync(args).GetAwaiter().GetResult();
    }

    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 key to stop worker.");
        Console.ReadLine();

        // Disposes of the Event Processor Host
        await eventProcessorHost.UnregisterEventProcessorAsync();
    }
}
公共类程序
{
private const string EventHubConnectionString=“Endpoint=sb://fake.servicebus.windows.net/;SharedAccessKeyName=SendETB;SharedAccessKey=jcvvex5ksghfjkpnmdns5jvnyvp9wc05jdumav3nw8=”;
私有常量字符串EventHubName=“myhub”;
私有常量字符串StorageContainerName=“我自己的容器”;
私有常量字符串StorageAccountName=“mystorage”;
私有常量字符串StorageAccountKey=“fakeZn8WUV1mcsh0MVbmea/ypxDs+No2tzrhr0kUmjxvA0a0jUxfZ29hHoY/yopVvGLEn/steqbbeyjymx9g=”;
私有静态只读字符串StorageConnectionString=string.Format(“DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}”,StorageAccountName,StorageAccountKey);
公共静态void Main(字符串[]args)
{
MainAsync(args).GetAwaiter().GetResult();
}
专用静态异步任务mainsync(字符串[]args)
{
Console.WriteLine(“注册事件处理器…”);
var eventProcessorHost=新的eventProcessorHost(
事件名称,
PartitionReceiver.DefaultConsumerGroupName,
EventHub连接字符串,
StorageConnectionString,
存储容器名称);
//注册事件处理器主机并开始接收消息
等待eventProcessorHost.RegisterEventProcessorAsync();
控制台。写入线(“接收。按回车键停止工作。”);
Console.ReadLine();
//处置事件处理器主机
等待eventProcessorHost.UnregisterEventProcessorAsync();
}
}
}

使用上面提到的代码,我得到一个错误

分区0上出错,错误:未经授权的访问。'执行此操作需要侦听的声明。资源:“sb://fake.servicebus.windows.net/etbhub/consumergroups/$default/partitions/0”。TrackingId:fakef417d94238ba36d41d32b83341_G9,系统跟踪器:网关5,时间戳:2020-01-27T22:06:49


错误消息是非常自我描述的。确保SharedAccessKeyName SendETB允许“侦听”权限。您可以在门户网站上查看它,如下所示


确保已为事件中心命名空间的侦听添加了共享访问策略

对于事件中心,它应该是Send

对于事件中心名称空间,它应该根据需要具有所有三个Manage、Sen和Listen