我刚刚尝试升级到serviceBus的4.1.3版本,现在我的SAS生成令牌失败了。我正在使用这些令牌与servicebus中的WCF中继连接。
我得到的错误是“超时间隔必须小于2 ^ 32-2”
令牌肯定适用于版本3.4.3。
当我生成令牌时,我正在计算1970年到3000年之间的timeToLive。我相信这是我的问题,好像我将其设置为低值我可以生成有效的新令牌(10天)。这对我不起作用,因为我需要不会过期的令牌。
现在有人如何使用timeToLive。什么是最大值,如果有任何解决方法,我可以继续使用我的SAS令牌。它们已经生成并且在现场 - 因此重新生成它们将是困难的。
我正在使用的代码如下:
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)
生成的sasKey在使用时会失败。如果我将TTL设置为10天就行了。
感谢您的帮助
答案 0 :(得分:0)
根据您的描述,我还在我身边创建了一个测试演示。效果很好。
我使用了WindowsAzure.ServiceBus 4.1.3。
我的代码如下:
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
结果:
我向它添加了八条消息。
答案 1 :(得分:0)
你已经连接了一个队列,如果要连接一个wcf中继,你会发现它不起作用。
请参阅Microsoft的回复 我从产品团队获悉,他们建议这是4.1.3版本中的设计行为。该变更是PM和管理团队的决定,其基础是应该定期重新请求SAS令牌。但是,这将在下一个版本中再次更改,其中将再次支持更长的到期时间。我们很遗憾无法为您提供快速解决方案。