0

部署到云后,我无法从 Azure 网站访问 Azure 服务总线队列。在本地主机上运行时,如果工作正常,我可以向队列发送消息,但如果我部署应用程序,在远程服务器上创建 QueueClient 时出现异常:

“套接字连接被中止,因为对套接字的异步发送未在分配的超时 00:00:59.4820817 内完成。分配给此操作的时间可能是较长超时的一部分。”

我正在使用QueueClient.CreateFromConnectionString(connectionString)方法。调试器显示 connectionString 变量一切正常。

连接字符串是:

Endpoint=sb://[removed].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[removed]

我试图将“Copy Local = True”设置为所有引用但没有成功。我正在使用 WindowsAzure.ServiceBus 2.6.4 nuget。

此外,如果队列存在,则不会在NamespaceManager.QueueExists(name)上引发异常,但如果不存在,则会在NamespaceManager.CreateQueue(name)上引发异常。

有人遇到过这样的问题吗?提前感谢您的任何提示。

更新 1:

为了澄清起见,我提供了代码块和跟踪输出:

System.Diagnostics.Trace.TraceError("BEGIN");
var queueClient = QueueClient.CreateFromConnectionString(this.configuration.ServiceBusConnectionString, "points");
System.Diagnostics.Trace.TraceError(this.configuration.ServiceBusConnectionString);
queueClient.Send(new BrokeredMessage());   
System.Diagnostics.Trace.TraceError("END");

产生输出:

  • 连接到应用程序日志...

  • 2015-03-29T01:40:29 欢迎您,您现在已连接到日志流服务。

  • 应用程序:2015-03-29T01:40:41 PID[1952] 错误开始

  • 应用程序:2015-03-29T01:40:44 PID[1952] 错误端点=sb://[removed-before-posting].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[removed-before-posting]

  • 应用程序:2015-03-29T01:41:48 PID [1952] 错误套接字连接被中止,因为在分配的超时时间 00:00:59.5586593 内未完成对套接字的异步发送。分配给此操作的时间可能是较长超时的一部分。

更新 2

使用 Azure 存储 API 或 SQL 服务器时没有连接问题。

更新 3

网站实例和服务总线命名空间都是在北欧地区创建的。

4

1 回答 1

0

我也无法获取连接字符串(在 Azure UI 中可用)以使队列工作,但我发现当我使用 Powershell 命令时

Get-AzureSBNamespace -Name $servicebusNamespace

为了获取连接字符串,它提供了一个完全不同的实际工作的连接字符串。所以现在我使用以下代码来配置我的所有服务总线队列:createServiceBusQueue.ps1

于 2016-09-14T14:10:00.530 回答