- SDK를 만료되지 않습니다 : C#
- 버전 : Microsoft.Azure.Devices.Client 1.2.3
버그 재생 코드 :
15 분 동안 다음 실행하자 또는 그래서 * 토큰이 만료되었지만 전송이 계속 성공하는 것을 볼 수 있습니다. 내가 틀렸다면푸른 만약 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 허브가 연결을 종료해야한다고 말하겠습니까?
* 내부적으로 토큰은 5 분 이상 유효합니다. 왜냐하면 그 토큰은 MaxClockSkew
으로 정의되어 있기 때문입니다. 따라서 시간을 절약하려면 SharedAccessSignatureBuilder.TimeToLive
을 -4.9 분으로 설정하고 토큰은 0.1 분 이내에 만료되어야합니다.
이것은 이미보고 된 버그입니다. MQTT를 사용하는 순간, 토큰은 장치가 연결될 때 검사되지만 토큰이 만료되면 장치가 IoT 허브에 의해 연결 해제되지 않습니다. –
감사합니다. 문제에 대한 링크를 제공 할 수 있습니까? 예를 들어 AMQP 당신은이 문제가 없습니까? –
문제에 대한 공개 링크가 없습니다. SAS가 만료되었을 때 AMQP를 사용해 보았지만 인증 오류가 발생했습니다. HTTP에서도 마찬가지입니다. 문제는 현재 MQTT 프로토콜에만 존재합니다. –