I need to deploy an SFTP server as a service backed by Azure Blob storage. For this purpose, using the Rebex FileServer component, I'm implementing a virtual file system which is bridging the blob storage (currently using development storage provided by Azure Storage Emulator).
The streaming works fine while uploading to the server, but I receive a "Seek fault" error when downloading; the BlobReadStream is beeing seeked beyond its length (ArgumentOutOfRangeException: The argument 'offset' is larger than maximum of '119166'). Both the stream's length and
GetLength(NodeBase node) return the correct value. If I download the whole blob(e.g. in a MemoryStream), it works fine, but this approach is not feasible as we are dealing with large files, of several gigabytes.
Here are some lines of code:
protected override NodeContent GetContent(NodeBase node, NodeContentParameters contentParameters)
stream = _azureFS.OpenFileRead(node.Path.StringPath);
nodeContent = NodeContent.CreateReadOnlyContent(stream);
public Stream OpenFileRead(string path)
CloudBlockBlob blob = GetCloudBlob(path);
if (blob == null)
Stream stream = blob.OpenRead();
//MemoryStream ms = new MemoryStream();
And the call stack:
Connecting through either FileZilla or WinSCP produces the same outcome.
What am I missing?
Thanks a lot,