1

我已经在 Server 2012 上安装了用于 Windows Server 的服务总线。我正在尝试使用“服务总线资源管理器”管理 GUI 来管理队列/主题。

我正在使用以下 PowerShell 命令生成的端点连接连接到我的服务命名空间:

Get-SBClientConfiguration -Namespaces 'MyNamespace' -Verbose;

生成:

Endpoint=sb://MyMachine/MyNamespace;StsEndpoint=https://MyMachine:9355/MyNamespace;RuntimePort=9354;ManagementPort=9355

而且我能够成功连接。

问题:

在 Service Bus Explorer GUI 中,当我尝试创建队列或主题时,日志输出中出现以下错误:

Exception: Object reference not set to an instance of an object.

有什么我想念的吗?我已经浏览了所有我能找到的 Service Bus 1.0 安装指南,并且一切似乎都符合我的安装要求。

4

1 回答 1

3

我是该工具的作者。在 12 月,我遇到了类似的问题:

如果您 GAC 的是 Microsoft.ServiceBus.dll v.1.8 的 Windows Azure 服务总线版本:

  • Service Bus 1.0 for Windows Server 的 Service Bus Gateway 和 Service Bus Message Broker Windows 服务正常启动,但它们加载的是云 dll 而不是本地的。
  • 在同一台机器上运行的任何客户端应用程序都会加载 dll 的云版本。
  • 如果客户端应用程序连接到本地的本地 SB 命名空间,则 NamespaceManager 和 MessagingFactory 会正确创建。
    • namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
    • MessagingFactory = MessagingFactory.CreateFromConnectionString(connectionString);
  • NamespaceManager 对象可用于创建和删除实体(例如队列)
  • 相反,如果应用程序尝试使用从 MessagingFactory 创建的 MessageSender 或 MessageReceiver 对象向本地队列发送或接收消息,则操作将失败并且应用程序会捕获异常(错误号为 50002)。从 GAC 中删除 Windows Azure 服务总线 Microsoft.ServiceBus.dll v.1.8 并重新启动服务总线网关和服务总线消息代理 Windows 服务后,问题消失了。
  • 客户端应用程序能够向/从链接云和本地 dll 的本地队列发送和接收消息。简而言之,如果您 GAC dll 的云版本、Service Bus Gateway 和 Service Bus Message Broker Windows 服务正确启动,您可以创建消息传递实体,但是当应用程序尝试发送/接收消息时会出错。

问题:

  • 你 GACed 了 dll 的 Windows Azure 版本吗?
  • 您使用的是哪个版本的服务总线资源管理器(请参阅关于表单)?
于 2013-02-22T17:18:09.367 回答