0

私はMVC4Webサイトを持っており、いくつかのMongodb機能を統合しようとしています(今のところ実験中です)。Azureにもデプロイしようとしているため、このmongodbプロジェクトを使用しています。このプロジェクトは、mongodbワーカーロールに接続するための接続ユーティリティを提供します。次のコンストラクターを持つMovieControllerがあります。

public class MovieController : Controller
    {
        MongoMovieHelper _movies;
        public MovieController()
        {
            _movies = new MongoMovieHelper();
        }
}

これにより、クラスが呼び出されます。

 public class MongoMovieHelper
    {
        public MongoCollection<Movie> Collection { get; private set; }

        public MongoMovieHelper()
        {
            MongoServerSettings serverSettings = ConnectionUtilities.GetConnectionSettings();
            MongoServer server = MongoServer.Create(serverSettings);
            MongoDatabase db = server["movies"];
            Collection = db.GetCollection<Movie>(typeof(Movie).Name.ToLower());
        }
...

ムービーコントローラからページを読み込もうとすると、Chromeデバッガで内部サーバーエラーが発生します。

Failed to load resource: the server responded with a status of 500 (Internal Server Error) 

そこで、VisualStudioでデバッグしてみました。コントローラーコンストラクターはヒットしますが、MongoMovieHelper内のブレークポイントはヒットせず、ステップインしようとすると、コントローラーコンストラクターが再度ヒットします。スタックトレースには、次のエラーが表示されます。

ファイルまたはアセンブリ'MongoDB.Driver、Version = 14.2.4500、Culture = neutral、PublicKeyToken=f686731cfb9cc103'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)

以前は、Mongodb接続を確立する別のクラスがあったため、ControllerはMongoDBHelperを呼び出すMongoMovieHelperを呼び出します。この場合、コントローラーとMongoMovieHelperの両方が呼び出されていましたが、MongoDBHelperは呼び出されていなかったため、問題はmongodb接続にあると思います。

これはおそらく新人の間違いですが、私は問題が何であるかを理解することができません、何かアイデアはありますか?

4

1 に答える 1

0

公式の mongodb c# ドライバーの最新バージョンを使用して問題を再現しようとしましたが、できませんでした。

NuGet で入手できる最新の公式ドライバーを使用しています。

サーバー オブジェクトを取得するために廃止されていないメソッドを使用するようにコードを変更しました。

public MongoMovieHelper()
    {
        var client = new MongoClient(MongoUrl.Create("mongodb://localhost:27017"));
        var server = client.GetServer();
        var db = server["movies"];
        Collection = db.GetCollection<Movie>(typeof (Movie).Name.ToLower());
    }

したがって、公式のドライバーを使用していない場合は、それを使用してください。

次のコマンドを使用して取得します。

Install-Package mongocsharpdriver

次に、コードを私のように変更してみて、それが機能するかどうかを確認してください。

表示されるエラーは、古いバージョンの公式ドライバーを使用しているか、公式ドライバーをまったく使用していないことを示しています。

注: nuget コンソール (/ui) を使用して古いドライバーをアンインストールするか、バイナリ参照を削除してプロジェクトをクリーンアップし、bin dll が残っていないことを確認します。

于 2013-02-21T11:26:25.090 に答える