0

Microsoft.ServiceBus.InvalidRequestException:连接失败。缓存刷新超时。服务器堆栈跟踪:Microsoft.ServiceBus.RelayedSocketInitiator.Connect(Uri uri, TimeSpan timeout) at Microsoft.ServiceBus.ConnectivityModeConnectionInitiator.Connect(Uri uri, TimeSpan timeout) at Microsoft.ServiceBus.Channels.BufferedConnectionInitiator.Connect(Uri uri, TimeSpan timeout) ) 在 Microsoft.ServiceBus.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout) 在 Microsoft.ServiceBus.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout) 在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 在 System.ServiceModel.Channels。 System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan 超时)处 System.ServiceModel.Channels.CommunicationObject 处的 CommunicationObject.Open(TimeSpan 超时)。

使用 NetTcpRelayBinding 打开连接时

try
{
   NetTcpRelayBinding netTcpRelay = new NetTcpRelayBinding();
   if (ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientMaxConnections > 0)
   {
     netTcpRelay.MaxConnections = ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientMaxConnections;
    }
    netTcpRelay.MaxReceivedMessageSize = ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientMaxReceivedMessageSize;
    if (ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientSendTimeout > 0)
    {
     netTcpRelay.SendTimeout = new TimeSpan(0, 0, ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientSendTimeout);
     }

   if (ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientReceiveTimeout > 0)
    {
      netTcpRelay.ReceiveTimeout = new TimeSpan(0, 0, ApplicationServer.Common.Utilities.ServicesConfigurationManager.ClientReceiveTimeout);
      }

    channelFactory = new ChannelFactory<TServiceChannel>(
                               netTcpRelay,
                               new EndpointAddress(serviceBusUri));

                    // Set the signature token
                    policyName = ...
                    accessKey = ...
                    channelFactory.Endpoint.Behaviors.Add(new TransportClientEndpointBehavior { TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(policyName, accessKey) });
                }
                catch (Exception exc)
                {
                    throw new ServiceBusRelayException("\nServiceBusRelayProxyHelper.Initialize (sb://): An error ocurred with ServiceBusUri='" + serviceBusUri + "' - PolicyName='"+ policyName +"'.\nException Message: " + exc.Message, exc);
                }
4

1 回答 1

0

从今天开始,我遇到了完全相同的问题。您的代码没有问题,我必须与 MSFT 支持合作才能解决问题。他们不得不将我的服务总线命名空间移动到另一个节点,然后解决了这个问题。我建议打开 Azure 支持的支持票。

于 2018-03-07T02:35:39.307 回答