MongoDb.GridFS.FindOneById возвращает ноль

Я загружаю изображение на сервер со следующим кодом:

public ActionResult AttachImage(HttpPostedFileBase file)
{
   var options = new MongoGridFSCreateOptions
   {
      Id = ObjectId.GenerateNewId().ToString(),
      ContentType = file.ContentType
    };
    Context.Database.GridFS.Upload(file.InputStream, file.FileName, options);
    return RedirectToAction("Index");
}

и пытается получить файл как:

public ActionResult GetImage(string id)
{
   var image = Context.Database.GridFS.FindOneById(new ObjectId(id));
   if(image == null)
   {
      return HttpNotFound();
   }
   return File(image.OpenRead(), image.ContentType);
}

После загрузки я вижу файл в базе данных, но при попытке загрузить его как

Context.Database.GridFS.FindOneById(new ObjectId(id));

Я всегда получаю ноль. Не могли бы вы подсказать, что я делаю не так?

public class DbContext
{
    public MongoDatabase Database;
    public DbContext()
    {
        var client = new MongoClient(Properties.Settings.Default.ConnectionString);
        var server = client.GetServer();
        Database = server.GetDatabase(Properties.Settings.Default.DatabaseName);
    }
}

mongocsharpdriver 2.5.0 mongo server 3.6

1 ответ

Решение

Оказалось, я неправильно искал файл по идентификатору.

Вместо

var image = Context.Database.GridFS.FindOneById(new ObjectId(id));

Я должен использовать

var image = Context.Database.GridFS.FindOneById(id);

Я использовал код из примеров для предыдущей версии драйвера, но в 2.5 нам не нужно использовать

 new ObjectId(id)
Другие вопросы по тегам