c# - 如何以编程方式为 'AutoDetect' 连接模式配置 Azure ServiceBus 监听器?

标签 c# azure azure-servicebusrelay

我设计了一个通过服务总线公开 LOB 应用程序的监听器。我必须编写这个监听器,因为我们的应用程序受到不允许入站连接的防火墙的保护。

下面的代码是我如何使用 NetTcpRelayBinding 初始化监听器,并且运行良好:

var sharedSecretServiceBusCredential = new TransportClientEndpointBehavior()
{
    TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("listener", "MySecret")
};

var address = ServiceBusEnvironment.CreateServiceUri("sb", "MyNamespace", "CrmConnectorService");

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Tcp;

_host = new ServiceHost(typeof(CrmConnectorService), address);

var binding = new NetTcpRelayBinding()
{
    CloseTimeout = TimeSpan.FromMinutes(5),
    OpenTimeout = TimeSpan.FromMinutes(5),
    ReceiveTimeout = TimeSpan.FromMinutes(5),
    SendTimeout = TimeSpan.FromMinutes(5)
};
binding.Security.RelayClientAuthenticationType = RelayClientAuthenticationType.RelayAccessToken;

var endpoint = _host.AddServiceEndpoint(typeof(ICrmConnectorService), binding, address);

var serviceRegistrySettings = new ServiceRegistrySettings(DiscoveryType.Private);

_host.Description.Endpoints[0].Behaviors.Add(serviceRegistrySettings);
_host.Description.Endpoints[0].Behaviors.Add(sharedSecretServiceBusCredential);

_host.Open();

但是,我们有一个新的要求:我需要能够支持代理。我的理解是 NetTcp 不支持代理(如果我错了,请纠正我),因此我需要能够回退到 HTTP(如果可能的话,我仍然想使用 TCP,并且只在必要时回退到 HTTP)。我做了一些研究,发现ServiceBus支持"AutoDetect" connectivity mode “探测任一连接选项是否适用于当前网络环境。如果两者都可用,系统将默认选择 TCP”。这正是我想要的。但是,我不知道如何改进我的代码以支持此功能。

显然我会改变:

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Tcp;

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.AutoDetect;

但我不知道我还需要改变什么。我猜测除了 NetTcp 之外我还需要配置另一个绑定(bind),但我该怎么做?

最佳答案

AutoDetect 是默认连接模式 - 您无需添加任何内容。它应该与代理一起使用。

关于c# - 如何以编程方式为 'AutoDetect' 连接模式配置 Azure ServiceBus 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833141/

相关文章:

wcf - Azure 服务总线中继将 204 'No Content' 响应转换为 502 'Bad Gateway'

c# - 适用于 Soap Web 服务的 Azure 中继

c# - 我可以在 WPF 中设置窗口边框颜色吗?

c# - 是否可以使用面向方面的方法通过 Autofac 和 DynamicProxy 登录 Azure 函数

azure - 如何转义 ARM 模板中的左方括号?

azure - 服务总线代理 VS 中继消息传递

c# - 如何在 3D 透视图中对 windows 8 UIElements 进行 Z 索引(Z 排序)?

c# - 局域网宠物项目

c# - 有没有一种自动处理数组和强类型集合之间转换的好方法?

c# - 对 Microsoft Graph API 执行获取请求时的 Microsoft.Graph.Models.ODataErrors.ODataError