Я боролся с той же проблемой несколько месяцев назад, и оказалось, что IIS перед ADLS устанавливает maxAllowedContentLength
со значением по умолчанию 30000000 байт (или 28,6 МБ). По сути, это означает, что всякий раз, когда мы хотим выдвинуть что-то большее, чем 30 МБ, этот запрос никогда не достигает ADL, поскольку IIS выдает 404,13 до этого. Ссылки .
Как уже предлагалось в ссылках, в ADLS есть драйвер с 4-МБ буфером , я использую .NET SDK сам, и следующий код хорошо мне послужил
public async Task AddFile(byte[] content, string path)
{
const int fourMb = 4 * 1024 * 1024;
var buffer = new byte[fourMb];
using (var stream = new MemoryStream(content))
{
if (!_adlsFileSystemClient.FileSystem.PathExists(_account, path))
{
_adlsFileSystemClient.FileSystem.Create(_account, path);
}
int bytesToRead;
while ((bytesToRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
if (bytesToRead < fourMb)
{
Array.Resize(ref buffer, bytesToRead);
}
using (var s = new MemoryStream(buffer))
{
await _adlsFileSystemClient.FileSystem.AppendAsync(_account, path, s);
}
//skipped for brevity