In my application, I need to support downloading arbitrary chunks of a GridFS file per request. To do this, I'm using bucket.OpenDownloadStream (setting Seekable to True in the options), and Stream.Read.
I get a NullReferenceException in GridFSSeekableDownloadStream.GetSegment at:
var segmentCount = _chunk.Length - segmentOffset;
because _chunk is null.
Here is a test that can be added to GridFSDownloadStreamBaseTests
[Test] public void Read_should_not_throw( [Values(0.5, 1.0, 1.5, 2.0, 2.5)] double contentSizeMultiple, [Values(false, true)] bool async, [Values(false, true)] bool seekable) { var bucket = CreateBucket(128); var contentSize = (int)(bucket.Options.ChunkSizeBytes * contentSizeMultiple); var content = CreateContent(contentSize); var id = CreateGridFSFile(bucket, content); var options = new GridFSDownloadOptions() {Seekable = seekable }; var subject = bucket.OpenDownloadStream(id, options); var buffer = new byte[contentSize]; if (async) { subject.ReadAsync(buffer, 0, contentSize).GetAwaiter().GetResult(); } else { subject.Read(buffer, 0, contentSize); } }