To share an Azure blob for downloading or editing requires sharing a link with a shared access signature (SaS) with required permissions. The BlobContainerClient.GenerateSasUri Method helps to generate a Uri to share. The BlobContainerClient.GenerateSasUri Method works only if the BlobServiceClient is created using storage access signature as shown below.
string connectionString = "DefaultEndpointsProtocol=https;AccountName=cheuw001assetssthot;AccountKey=xxxxxxxxxxxxxxxxxxxxxxx==;EndpointSuffix=core.windows.net"; BlobServiceClient blobServiceClient = new(connectionString);
The usage of paswordless authentication using managed identities is the recommended approach to use Azure resources. If the DefaultAzureCredential is used with managed identity (user assigned or system assigned) to create BlobServiceClient as shown below, BlobContainerClient.GenerateSasUri Method failes with error "System.ArgumentNullException: Value cannot be null. (Parameter 'sharedKeyCredential')".
BlobServiceClient blobServiceClient = new( new Uri("https://cheuw001assetssthot.blob.core.windows.net/"), new DefaultAzureCredential());