Connecting to MongoDB from azure function

2019-02-24 10:57发布

问题:

I have a problem connecting to a MongoDB from a C# function running on microsoft azure. The function is time triggered, it should collect some data from MongoDB and put them to storage queue.

I have added mongoDB dependencies to the to project.json and this is what the file looks like:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "MongoDB.Bson": "2.4.2",
        "MongoDB.Driver": "2.4.2",
        "MongoDB.Driver.Core": "2.4.2",
        "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
      }
    }
  }
}

However when i call:

MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl(conn));
settings.SslSettings = new SslSettings() { EnabledSslProtocols = SslProtocols.Tls12 };
var client = new MongoClient(settings);

I get an error after the last line is called:

mscorlib: Exception has been thrown by the target of an invocation. MongoDB.Driver.Core: Could not load file or assembly 'System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

I've checked and .net version is 4.6 so there should be no problem with that. Is there anything else I am missing.

回答1:

I've been digging a bit through their JIRA issues and found JIRA ISSUE. I've reverted the MongoDB.Driver MongoDB.Driver.Core and MongoDB.Bson to a version 2.3.0 and it work like a fine tuned watch, so it seems to be the problem with the Mongo package itself.

I've tested it with the different versions of the package and the issue is introduced in the version 2.4.0. All the previous versions work well.