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

时间:2013-02-20 10:07:53

标签: c# mongodb azure asp.net-mvc-4

我有一个MVC4网站,我正在尝试集成一些Mongodb功能(现在只是试验)。我正在使用此mongodb project,因为我也尝试部署到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中的任何断点都没有,并且尝试Step into再次点击控制器构造函数。堆栈跟踪显示以下错误:

  

无法加载文件或程序集'MongoDB.Driver,Version = 1.4.2.4500,   Culture = neutral,PublicKeyToken = f686731cfb9cc103'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

之前我有另一个使Mongodb连接的类,所以Controller调用MongoMovieHelper调用MongoDBHelper。在这种情况下,控制器和MongoMovieHelper都被调用,但MongoDBHelper不是,所以我认为问题在于mongodb连接。

这可能是一些新手的错误,但我无法弄清楚问题可能是什么,有什么想法吗?

1 个答案:

答案 0 :(得分: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。