0

我刚刚尝试升级到 serviceBus 版本 4.1.3,现在我的 SAS 生成令牌失败。我正在使用这些令牌连接服务总线中的 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 天,它会起作用。

谢谢你的帮助

4

2 回答 2

0

根据你的描述,我这边也做了一个测试demo。它运作良好。

我使用了 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

结果:

我向它添加了八条消息。

在此处输入图像描述

于 2017-10-17T09:26:50.993 回答
0

你已经连接了一个队列,如果你要连接一个 wcf 中继你会发现它不起作用。

请参阅我从产品团队听到的 Microsoft 的回复,他们建议这是版本 4.1.3 中的设计行为。更改是 PM 和管理团队基于应定期重新请求 SAS 令牌的理解做出的决定。但是,这将在下一个版本中再次更改,其中将再次支持更长的到期时间。我们很遗憾未能为您提供快速的解决方案。

于 2017-10-18T12:31:07.437 回答