当我们尝试使用 Azure 服务总线中继地址和 webHttpRelayBinding 启动 WCF 服务时,我们会收到一个 AddressAlreadyInUseException。
我们在这里使用示例:https ://code.msdn.microsoft.com/Relayed-Messaging-Bindings-a6477ba0
除非您使用以下代码创建中继,否则该示例无法正常工作:
string connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"];
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
var tRelayExists = namespaceManager.RelayExistsAsync("Image");
if (!tRelayExists.Result)
{
var t = namespaceManager.CreateRelayAsync(new RelayDescription("Image", RelayType.Http));
Task.WaitAll(t);
RelayDescription result = t.Result;
}
在 Program.Main() 中执行任何其他工作之前,您需要添加 Azure 服务总线 nuget 包。然后,您需要使用 Azure 凭据更新 App.config 中名为 Microsoft.ServiceBus.ConnectionString 的 appSettings 下的 ConnectionString。
我们已经使用 TCPViewer 查看正在使用的端口并且没有发现冲突。在我们的实际项目中,我们尝试了 webHttpRelayBinding 和 netTcpRelayBinding。最后,我们想使用 netTcpRelayBinding,这样我们就可以使用 DuplexChannels。
关于导致我们问题的任何想法?我们是否缺少一些未记录的配置步骤?每个教程都让这看起来很简单,但我们发现每个教程都缺少一些关键步骤。因此,如果我们错过了更多步骤,我不会感到惊讶。