繁体   English   中英

使用MongoDB项目时未调用C#类

[英]C# classes not being called when using MongoDB project

我有一个MVC4网站,我正在尝试集成一些Mongodb功能(现在仅作试验)。 我正在使用此mongodb项目,因为我也在尝试部署到Azure,因此该项目提供了用于连接到mongodb worker角色的连接实用程序。 我有一个带有以下构造函数的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) 

因此,我尝试在Visual Studio中进行调试。 控制器构造函数会被命中,但是MongoMovieHelper中的任何断点都不会,并且尝试进入只是再次击中控制器构造函数。 堆栈跟踪显示以下错误:

无法加载文件或程序集“ MongoDB.Driver,版本= 1.4.2.4500,区域性=中性,PublicKeyToken = f686731cfb9cc103”或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)

以前,我还有另一个用于建立Mongodb连接的类,因此Controller调用MongoMovieHelper,后者又调用MongoDBHelper。 在这种情况下,控制器和MongoMovieHelper均被调用,但MongoDBHelper没有被调用,因此我认为问题出在mongodb连接中。

这可能是一些菜鸟的错误,但是我只是想不出问题出在哪里,有什么想法吗?

我试图使用最新版本的官方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)卸载旧驱动程序,或者删除二进制ref并清理项目,以确保没有任何bin dll残留。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM