我正在开发一个程序,将消息从C#控制台应用程序发送到Azure Event Hub。代码参考链接如下:
参考链接:https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send
在上面的代码中,我得到了异常:放置令牌失败。状态代码:401:您访问的页面不存在我已尝试重新生成主密钥和辅助密钥。以下是连接字符串和实体路径值的格式,如下所示:
请提供解决方案。谢谢。
我正在开发一个程序,将消息从C#控制台应用程序发送到Azure Event Hub。代码参考链接如下:
参考链接:https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send
在上面的代码中,我得到了异常:放置令牌失败。状态代码:401:您访问的页面不存在我已尝试重新生成主密钥和辅助密钥。以下是连接字符串和实体路径值的格式,如下所示:
请提供解决方案。谢谢。
5条答案
按热度按时间7bsow1i61#
希望还不算太晚!
我有同样的问题,我的问题是,我已经改变了系统时间从设备,连接到事件中心。我把它从7点调到4点。
bvn4nwqk2#
以下可能是一个非常具体的场景。
如果您在Windows中使用Docker运行应用程序时遇到此问题,并且Docker通过WSL 2(而不是HyperV)运行,则仍需要Microsoft解决WSL 2问题:
这是主机操作系统和正在运行的容器之间的时间同步问题。它们基本上有不同的日期/时间,这在通过过期的令牌进行身份验证时会造成麻烦。
当我的笔记本电脑在睡眠/休眠后醒来时发生了这种情况。我使用Docker容器运行我的应用程序。当它试图连接到服务总线时,我开始得到那些未经授权的错误,但只在睡眠模式之后,而不是之前。
有些人说它通过重新启动Docker主机得到了解决。在我的情况下,它只工作重新启动我的电脑。过了一会儿,我发现:
https://github.com/microsoft/WSL/issues/4245
现在我不需要重新启动Windows了,只需运行
修复了在操作系统/容器之间强制时间同步的问题(这也会导致Docker主机重启)。
bxfogqkk3#
我在Windows的Docker中运行时也遇到了同样的问题。我重新启动了docker主机,它工作了-不知道为什么
vlju58qv4#
对我来说,问题是“Put token failed.状态代码:401,状态描述:“未经授权”是由Azure EventHub客户端保留检查点的存储帐户的网络配置导致的。SA和EH都有白名单客户端地址,当我从笔记本电脑运行客户端应用程序时,它可以工作(在代理后面)。但是,当相同的客户端部署到AKS并且通过AKS出口公共IP(即使该IP在SA和EH上被列入白名单)进行动作时,EH接受传入连接,但是SA拒绝它。我不确定AKS pod从哪里触发连接_在SA上没有任何记录的连接尝试。当我让SA接受来自“所有网络”的连接时,问题是“Put token failed”。状态代码:401,状态描述:“未经授权”已经消失了。微软建议将SA部署到另一个区域,以便在不同的区域拥有EH和SA,但我还没有测试它,由于计费流量,我不会。希望这对你有帮助。
svgewumm5#
当你的docker容器中的本地时间不同时,会发生这种情况,要解决这个问题,请检查docker容器中的日期为
命令docker run -d -p -v /etc/localtime:/etc/localtime:ro该命令将与本地机器同步docker容器时间。
例如docker run -d -p 53238:80 -v /etc/localtime:/etc/localtime:ro aba.azurecr.io/busbasedsolutions:v1
我已经把一个完整的名称的docker图像,但你可以有自己的版本。