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);
}
}