public byte[] GetFilePart(string alias, long offset, int fetchSize) { if (fetchSize > MaxReadFileChunk) { throw new SoftwareException("Unable to read more than '{0}' bytes from a file. Client requested '{1}'.", MaxReadFileChunk, fetchSize); } var fileInfo = LocalStore.GetInfo(alias); if (offset > fileInfo.Length) { throw new ArgumentOutOfRangeException("offset", "Offset '{0}' larger than file size '{1}'".FormatWith(offset, fileInfo.Length)); } using (var reader = LocalStore.OpenRead(alias)) { reader.Seek(offset, SeekOrigin.Begin); var bytes = new byte[fetchSize]; var bytesRead = reader.Read(bytes, 0, fetchSize); Array.Resize(ref bytes, bytesRead); return(bytes); } }