2017-02-04 5 views
2

Microsoft Azureで動作するC#関数からMongoDBに接続する際に問題があります。関数は時間をトリガし、MongoDBからデータを収集してストレージキューに格納する必要があります。azure関数からMongoDBに接続する

私はproject.jsonするにはMongoDBの依存関係を追加していると、このファイルは次のようになります。私が呼ぶとき

{ 
    "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" 
     } 
    } 
    } 
} 

は、しかし:

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

私は最後の後にエラーが発生します行は以下のように呼ばれます:

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. 

私はチェックしました.netバージョンは4.6ですので問題はありませんそれ。私が紛失しているものは他にありますか?

+0

なぜmongodbドライバにinterop依存関係が必要ですか? –

+0

MongoDB.Driver.Coreは相互運用性に依存しています。どうして?私は本当に分かりません。それはドライバーの開発者のための質問です。 –

+0

また、必要なアセンブリに直接関係する全く新しい関数を追加しようとしましたが、結果は同じです。 –

答えて

3

私はJIRAの問題を少し掘り下げて、JIRA ISSUEを見つけました。私はMongoDB.DriverMongoDB.Driver.CoreMongoDB.Bsonをバージョン2.3.0に戻しました。それは細かいチューンの時計のように機能するので、Mongoパッケージ自体に問題があるようです。

さまざまなバージョンのパッケージでテストしましたが、この問題はバージョン2.4.0で導入されました。すべての以前のバージョンはうまくいきます。

+0

ありがとうIvan、それが原因でした。誰かが興味を持っているなら、私はAzure関数のためのナゲットパッケージを作った:https://www.nuget.org/packages/AzureMongoRepository.AzureFunctions –

+0

あなたは私の主人であり、救い主はあなたを祝福する –

関連する問題