Для этого я использовал следующую ссылку Microsoft: microsoft-link-path-update
Вот код, который я придумал с помощью C#. :
Код: Выделить всё
static async Task SetUpPermissions(string accessToken)
{
// Replace with your values
string accountName = "";
string filesystem = "";
string directoryOrFile = "";
string userObjectId = "";
// URL for setting ACL
string url = $"https://{accountName}.dfs.core.windows.net/{filesystem}/{directoryOrFile}?action= setAccessControl";
// Headers
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
client.DefaultRequestHeaders.Add("x-ms-version", "2023-08-03");
client.DefaultRequestHeaders.Add("x-ms-lease-action", "acquire-release");
client.DefaultRequestHeaders.Add("x-ms-date", DateTime.UtcNow.ToString("R"));
client.DefaultRequestHeaders.Add("x-ms-client-request-id", Guid.NewGuid().ToString());
// Body with ACL settings
string aclString = $"user:{userObjectId}:rwx,group::r-x,other::r--,mask::rwx,default:user:{userObjectId}:rwx,default:group::r-x,default:other::r--";
string body = $"[{{\"acl\": \"{aclString}\"}}]";
// Make the request
HttpContent content = new StringContent(body, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PatchAsync(url, content);
// Check the response
if (response.IsSuccessStatusCode)
{
Console.WriteLine("ACL set successfully");
}
else
{
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Failed to set ACL: {response.StatusCode} {responseBody}");
}
}
}
"Не указан HTTP-заголовок, обязательный для этого запроса",
однако требуется только «x-ms-lease-action».
Подробнее здесь: https://stackoverflow.com/questions/786 ... th-c-sharp