【问题标题】:Microsoft Service Bus 1.0 unable to communicate with a server outside the client's domainMicrosoft Service Bus 1.0 无法与客户端域外的服务器通信
【发布时间】:2012-10-22 05:01:27
【问题描述】:

我已在加入域的服务器上安装了 Service Bus 1.0。

通过在加入同一域的 PC 上运行的客户端应用程序,我能够创建队列、消息等。我使用连接字符串指定同一域中用户的凭据。一切正常。

在域外的 PC 上运行的客户端应用程序无法正常工作。我认为这与如果客户端应用程序不在同一个域上,则无法使用服务器域中的用户这一事实有关,因此我还尝试使用包含 SharedSecretIssuer 和 ShareSecretValue 的连接字符串。通过这种方法,我得到了:

获取“https://servicebus01.dns1.XXXXXX.com:9355/XXXXXServiceBus/WRAPv0.9/”的令牌时,令牌提供程序服务不可用。内部异常包含“远程服务器返回错误:(404)未找到。”。

有人知道是否可以与该服务器域外的服务总线服务器通信?

【问题讨论】:

    标签: servicebus


    【解决方案1】:

    或者,即使您的客户端未加入域,您也可以使用 OAuthTokenProvider。

    创建命名空间管理器和工厂后,在进行任何操作之前:

    namespaceManager.Settings.TokenProvider = TokenProvider.CreateOAuthTokenProvider(new Uri[] { new Uri("https://servicebus01.dns1.XXXXXX.com:9355") }, new NetworkCredential("user", "password", “域”))

    messagingFactory.GetSettings().TokenProvider = TokenProvider.CreateOAuthTokenProvider(new Uri[] { new Uri("https://servicebus01.dns1.XXXXXX.com:9355")}, new NetworkCredential("user", "password ", "域"));

    【讨论】:

    • 这似乎适用于 namespaceManager 但不适用于 MessagingFactory。任何想法为什么它适用于一个而不是另一个?
    • @YetAnotherDeveloper 我设法通过创建一个 MessagingFactorySettings 对象、在其上设置令牌提供程序并将其传递给 MessagingFactory.Create() 方法来克服这一点。使用“messagingFactory.GetSettings().TokenProvider = ...”似乎并没有真正设置 TokenProvider。
    【解决方案2】:

    我发现了问题!

    运行客户端应用程序的计算机根本没有加入域。它必须加入域,即使 clients and servers 域之间不信任。

    奇怪的限制...

    【讨论】:

    • 您可以通过创建包含域用户凭据的 TokenProvider 来解决此问题。只要机器可以访问加入域的服务器,这将起作用。有关如何执行此操作的示例,请参阅希拉里的评论。
    猜你喜欢
    • 2011-04-28
    • 2020-01-14
    • 2023-03-08
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2017-07-16
    • 2011-09-11
    • 2016-10-04
    相关资源
    最近更新 更多