2017-10-15 8 views
0

Je viens d'essayer de passer à la version 4.1.3 de serviceBus et maintenant mon SAS généré a échoué. J'utilise ces jetons pour me connecter avec un relais WCF dans le servicebus.Le jeton SAS échoue lors de la mise à niveau de ServiceBus 3.4.3 à 4.1.3

L'erreur que je reçois est « intervalle Time-out doit être inférieur à 2^32-2 »

Le jeton Travaillons sans aucun doute sur la version 3.4.3. Quand j'ai généré le jeton, je calculais un timeToLive compris entre 1970 et l'année 3000. Je crois que c'est mon problème, car si je le mets à une valeur faible, je peux générer de nouveaux jetons qui fonctionnent (10 jours). Cela ne fonctionnera pas pour moi parce que j'ai besoin de jetons qui n'expireront pas.

Est-ce que n'importe qui maintenant comment le timeToLive fonctionne. Quelle est la valeur maximale et s'il y a une solution de rechange où je peux continuer à utiliser mes jetons SAS? Ils ont été générés et sont sur le terrain - il sera donc difficile de les générer de nouveau.

Le code J'utilise est ci-dessous:

Dim TimeToLive = TimeSpan.FromDays(365) 'This will fail  
Dim serviceUri = ServiceBusEnvironment.CreateServiceUri("https", 
    serviceNamespace, 
    servicePath).ToString().Trim("/") 

Dim sasKey As String = SharedAccessSignatureTokenProvider.GetSharedAccessSignature(
    SharedAccessKeyName, 
    SharedAccessKeyPrimary, 
    serviceUri, 
    TimeToLive) 

le sasKey généré échouera quand il est utilisé. si je règle le TTL à 10 jours cela fonctionnera.

Merci pour votre aide

Répondre

0

Selon votre description, j'ai aussi créé une démonstration de test de mon côté. Ça marche bien.

J'ai utilisé WindowsAzure.ServiceBus 4.1.3.

enter image description here

Mes codes comme ci-dessous:

Sub Main() 

    Dim serviceNamespace = " " 
    Dim servicePath = " " 
    Dim SharedAccessKeyName = " " 
    Dim SharedAccessKeyPrimary = " " 
    Dim TimeToLive = TimeSpan.FromDays(365) 'This will fail  
    Dim serviceUri = ServiceBusEnvironment.CreateServiceUri("https", 
     serviceNamespace, 
     servicePath).ToString().Trim("/") 
    Dim sasKey As String = SharedAccessSignatureTokenProvider.GetSharedAccessSignature(
     SharedAccessKeyName, 
     SharedAccessKeyPrimary, 
     serviceUri, 
     TimeToLive) 
    Dim mfSettings As New MessagingFactorySettings() 
    mfSettings.TransportType = TransportType.NetMessaging 
    mfSettings.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sasKey) 
    Dim mf As MessagingFactory = MessagingFactory.Create("sb://serviceNamespace.servicebus.windows.net", mfSettings) 
    ' Create Client 
    Dim client As QueueClient = mf.CreateQueueClient(servicePath) 

    Dim message = New BrokeredMessage("test") 



    client.Send(message) 

End Sub 

Résultat:

j'ajouter huit des messages.

enter image description here

0

Vous avez connecté une file d'attente, si vous deviez connecter un relais de WCF, vous constaterez que cela ne fonctionnera pas.

Voir la réponse de Microsoft J'ai entendu parler de l'équipe de produit et ils ont informé qu'il s'agit d'un comportement de conception par défaut dans la version 4.1.3. Le changement était une décision du GP et de l'équipe de direction, étant entendu que le jeton SAS devrait être périodiquement demandé de nouveau. Cependant ceci est sur le point de changer à nouveau dans la prochaine version dans laquelle le temps d'expiration plus long sera soutenu encore. Nous regrettons de ne pas pouvoir vous fournir une solution rapide.