1. Microsoft Docs - Message sessions: Request-response pattern: "The receiver processes the request and sends a response to the queue specified by the ReplyTo property. The receiver sets the CorrelationId property to the value of the CorrelationId property of the request message it processed." (Note: The documentation states CorrelationId to CorrelationId, but the common and intended pattern is MessageId of request to CorrelationId of response). The MessageId is the unique identifier for the request. This supports option D.
Source: Microsoft Azure Documentation, "Message sessions", section "Request-response pattern".
2. Microsoft Docs - ServiceBusMessage.CorrelationId Property: "Enables an application to specify a context for the message for the purposes of correlation, for example reflecting the MessageId of a request message when replying."
Source: Microsoft .NET API Documentation for Azure.Messaging.ServiceBus.ServiceBusMessage.CorrelationId.
3. Microsoft Docs - ServiceBusMessage.ReplyToSessionId Property: "Gets or sets a session identifier to be set on the reply message. ... When a sender sends a request message, it can set this property to a unique session identifier. The receiver of the request message can then copy this value to the SessionId property of the reply message." This supports the logic behind option A.
Source: Microsoft .NET API Documentation for Azure.Messaging.ServiceBus.ServiceBusMessage.ReplyToSessionId.
4. Microsoft Docs - Service Bus messages, payloads, and serialization: This document lists message properties and explicitly states that SequenceNumber and DeliveryCount are read-only system properties.
Source: Microsoft Azure Documentation, "Service Bus messages, payloads, and serialization", section "Message metadata".