[英]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.