मेरे पास एक बहुत ही बुनियादी उदाहरण है कि मुझे काम नहीं मिल रहा है। मैं जिस उपयोगकर्ता का उपयोग कर रहा हूं वह एक सदस्यता स्वामी है, इसलिए उसके पास हर चीज तक पहुंच होनी चाहिए। यदि मैं निम्नलिखित को चलाता हूं जब यह वास्तव में ब्लॉब टेक्स्ट प्राप्त करने का प्रयास करता है जो तब होता है जब यह खत्म हो जाता है:

StorageException: सर्वर अनुरोध को प्रमाणित करने में विफल रहा। सुनिश्चित करें कि हस्ताक्षर सहित प्राधिकरण शीर्षलेख का मान सही ढंग से बना है।

using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace testmsistorageaccess
{
    class Program
    {
        public static void Main()
        {
            AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
            var tokenAndFrequency = TokenRenewerAsync(azureServiceTokenProvider,
                                                        CancellationToken.None).GetAwaiter().GetResult();

            TokenCredential tokenCredential = new TokenCredential(tokenAndFrequency.Token,
                                                                    TokenRenewerAsync,
                                                                    azureServiceTokenProvider,
                                                                    tokenAndFrequency.Frequency.Value);

            StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);

            var storageUri = new Uri("https://mystorageaccount.blob.core.windows.net");
            var client = new CloudBlobClient(storageUri, storageCredentials);
            var container = client.GetContainerReference("bob");
            string content = container.GetBlockBlobReference("bob.xml").DownloadTextAsync().Result;
            Console.WriteLine($"Got {content}");
        }

        private static async Task<NewTokenAndFrequency> TokenRenewerAsync(Object state, CancellationToken cancellationToken)
        {
            const string StorageResource = "https://storage.azure.com/";
            var authResult = await ((AzureServiceTokenProvider)state).GetAuthenticationResultAsync(StorageResource);
            var next = (authResult.ExpiresOn - DateTimeOffset.UtcNow) - TimeSpan.FromMinutes(5);
            if (next.Ticks < 0)
            {
                next = default(TimeSpan);
            }
            return new NewTokenAndFrequency(authResult.AccessToken, next);
        }
    }
}

सुनिश्चित नहीं है कि मैं यहाँ क्या गलत कर रहा हूँ, मैंने जाँच की है और जिस उपयोगकर्ता का वह उपयोग करने का प्रयास कर रहा है और जो सही प्रतीत होता है और उसके पास सही AD Tenant ID है:

enter image description here

मैंने यूटीसीएनओ के साथ अपनी स्थानीय मशीन पर समय की जांच करने का उल्लेख देखा और पुष्टि की कि यह जीएमटी समय के साथ सही है, इसके अलावा मुझे इसे डीबग करने के बारे में और कुछ नहीं मिला है।

किसी भी मदद की सराहना की

1
Simon 8 जुलाई 2019, 18:03

1 उत्तर

सबसे बढ़िया उत्तर

सदस्यता स्वामी! = डेटा एक्सेस। आपको उपयोगकर्ता के लिए संग्रहण ब्लॉब योगदानकर्ता या संग्रहण ब्लॉब रीडर भूमिका जोड़ने की आवश्यकता है।

3
juunas 8 जुलाई 2019, 20:41