尝试侦听Azure事件中心时发生未经授权的错误
我有一个简单的EventHub侦听器示例代码,尝试侦听EventHub尝试侦听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=";
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