从Functions连接到Service Bus模拟器失败,尽管通过API服务器可以连接
我正在使用.NET Aspire,与一个ASP.NET API服务器、Azure Service Bus和 Azure Functions(隔离工作者模型)一起本地运行。
然而,问题在于我似乎无法从函数连接到Service Bus,即使我已检查提供的连接字符串是相同的。它既不能从队列中读取,也不能写入队列,并且会无限期地挂起。
string? connectionString = Environment.GetEnvironmentVariable( "SERVICE_BUS_CONNECTION_STRING");
await using var client = new ServiceBusClient(connectionString);
string queueName = "tasksQueue";
ServiceBusSender sender = client.CreateSender(queueName);
ServiceBusMessage message = new ServiceBusMessage("Health check message");
await sender.SendMessageAsync(message);
我的发送代码,在调试器中,卡在最后一行。过了一会儿,它返回了“无法建立连接,因为目标计算机主动拒绝连接。”
我做了一些检查:
- 调试器运行时确实存在连接字符串,同样的字符串对API服务器连接到Service Bus是可用的。
- 连接字符串是由Aspire传递的,它是
Endpoint=sb://localhost:34628;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
我还附上了Aspire资源页面的照片,看起来一切都在正常运行。 - 名为tasksQueue的队列在Service Bus中已经存在。

我在网上找不到解决方案,一直卡在这里,非常感谢任何帮助。也许有防火墙阻止访问,但所有都在本地运行,我也没发现有什么东西会阻止它。
解决方案
我终于找到了。问题在于我为Azure Functions使用了错误的.NET版本。我最初使用的是Visual Studio IDE提供的模板,当时.NET 8是唯一受支持的最新版本。但原来,你必须去
Tools -> Options -> Projects & Solutions -> Azure functions and click on the "Check for updates" button.
来获取用于Azure Functions的更新模板。
使用.NET 10的模板后,按预期工作。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。