Der folgende Code, wenn sie auf einem echten Azure-Speicherkonto wies die Fleckinhaltsaktualisierer erfolgreich zurück:Wie verwende ich den Azure-Speicheremulator-Blob-Endpunkt, um einen Blob zu erhalten?
var path = $"{container}/{blob}";
var rfcDate = DateTime.UtcNow.ToString("R");
var headers = "GET\n\n\n\n\n\n\n\n\n\n\n\n" +
"x-ms-blob-type:Block\n" +
$"x-ms-date:{rfcDate}\n" +
$"x-ms-version:{ServiceVersion}\n" +
$"/{AccountName}/{path}";
var uri = new Uri(BlobEndpoint + path);
var request = new HttpRequestMessage(HttpMethod.Get, uri);
request.Headers.Add("x-ms-blob-type", "Block");
request.Headers.Add("x-ms-date", rfcDate);
request.Headers.Add("x-ms-version", ServiceVersion);
string signature = "";
using (var sha = new HMACSHA256(System.Convert.FromBase64String(AccountKey)))
{
var data = Encoding.UTF8.GetBytes(headers);
signature = System.Convert.ToBase64String(sha.ComputeHash(data));
}
var authHeader = $"SharedKey {AccountName}:{signature}";
request.Headers.Add("Authorization", authHeader);
using (var client = new HttpClient())
{
var response = await client.SendAsync(request);
return await response.Content.ReadAsStringAsync();
}
Allerdings, wenn ich es so konfigurieren, die Azure-Emulator zu verwenden, wo:
- Account devstoreaccount1 =
- AccountKey = Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw ==
- BlobEndpoint = http://127.0.0.1:10000/
- ServiceVersion = 2009-09-19
Ich verwende ich Azure Storage Emulator v4.6 immer 404. bekommen. Ist der Code oder die Konfiguration falsch oder wird dies nicht vom Emulator unterstützt?
Dank. Ich sehe, was ich falsch gemacht habe. –