- SDK: C#
- Версия: 1.2.3 Microsoft.Azure.Devices.Client
ошибка код воспроизводства:
Пусть следующий прогон в течение 15 минут или поэтому *, и вы увидите, что отправка еще успешна, хотя токен должен быть истек.Azure IoT концентратор SAS Токен не истекаетvar hostName = ... var deviceId = ... var sasToken = new SharedAccessSignatureBuilder { Key = sharedAccessKey, Target = $"{hostName}/devices/{deviceId}", TimeToLive = TimeSpan.FromMinutes(5) } .ToSignature(); var authenticationMethod = new DeviceAuthenticationWithToken(deviceId, sasToken); var connectionString = IotHubConnectionStringBuilder .Create(hostName, authenticationMethod) .ToString(); var deviceClient = DeviceClient .CreateFromConnectionString(connectionString, TransportType.Mqtt); while (true) { Console.WriteLine($"{DateTime.UtcNow}: Sending"); var messageContent = Encoding.UTF8.GetBytes("{}"); var message = new Message(messageContent); await deviceClient.SendEventAsync(message); await Task.Delay(TimeSpan.FromSeconds(10)); }
Поправьте меня, если я ошибаюсь, но это означает, что это открытое соединение никогда не истекает? Чья это ошибка? Я бы сказал, что концентратор IoT должен закрыть соединение, когда токен истекает, не так ли?
* Внутренний токен действует в течение еще пяти минут, потому что это то, что они определяют как MaxClockSkew
. Поэтому, чтобы сэкономить время, вы можете установить SharedAccessSignatureBuilder.TimeToLive
-4,9 минуты, а токен должен истечь в течение 0.1 минут.
Это ошибка, о которой уже сообщалось - на данный момент, если вы используете MQTT, токен проверяется, когда устройство подключается, но устройство не отключается концентратором IoT, когда истекает срок действия токена. –
Хорошо, спасибо. Можете ли вы предоставить ссылку на эту проблему? Таким образом, вы имеете в виду при использовании, например, AMQP у вас нет этой проблемы? –
У меня нет публичной ссылки на эту проблему. Я просто попытался с AMQP и получил ошибку авторизации, когда SAS истек, так же, как и с HTTP. Таким образом, проблема существует только с протоколом MQTT. –