当前位置: 首页 > 知识库问答 >
问题:

C#类在使用MongoDB项目时不被调用

江承嗣
2023-03-14

我有一个MVC4网站,我正在尝试集成一些Mongodb功能(现在只是试验)。我正在使用这个mongodb项目,因为我也在尝试部署到Azure,这个项目提供了连接到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) 

所以我尝试在视觉工作室调试。控制器构造函数会被击中,但是MongoMoviHelper中的任何断点不会,并且试图进入只会再次击中控制器构造函数。堆栈跟踪显示以下错误:

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

以前我有另一个类,它建立Mongodb连接,所以控制器调用MongoMovieHelper,它调用MongoDBHelper。在本例中,控制器和MongoMovieHelper都被调用,但MongoDBHelper没有被调用,因此我认为问题在于mongodb连接。

这可能是一些新手的错误,但我只是不知道问题可能是什么,有什么想法吗?

共有1个答案

燕琛
2023-03-14

我试图重新创建您的问题使用官方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挂起。

 类似资料:
  • 我是cmake的新手,我想使用C++和最新的mongodb cxx驱动程序连接到mongodb。我设法编译并安装了驱动程序,但现在我坚持在我的cmake项目中使用它。 我使用默认设置安装了mongodb驱动程序,所以它位于/usr/local/lib/include/mongoCxx/v_noabi/mongoCxx下。 include_directories(/usr/local/lib/inc

  • 为了大学课程,我正在和一个朋友做一个游戏。一般的想法是,我们有一些平台从右向左移动,每次一个平台离开屏幕时,它都会在右侧随机的和位置生成(在一定范围内)。会有一个小精灵从一个平台跳到另一个平台。 我们遇到了一个不确定如何解决的问题。我们有所有正确的代码和一切,但平台就是不动。它们应该以每帧像素的恒定速度向左移动()。 然而,我们无法让它们移动;它们在屏幕上的位置是静态的,每个人最初被呼叫的位置。

  • 这是python游戏的基本战利品表。 常见的,如果滴滚动到任何数字,包括13 不寻常,如果下降滚动14通过,并在18 如果跌落在19或20滚动 即使在满足条件的情况下,该程序也会忽略罕见掉落表,而是从罕见掉落表中取出一个项目,例如掉落=20 1000金币 有人能解释一下这里的问题吗?

  • 问题内容: 我有一个完全用C编写的程序,其中使用了多个目标文件。这些文件都打包在一个存档文件中,而该存档文件又在程序主文件的编译时使用。 我想在Go中为此项目编写一个新文件。我的想法是编写此文件,然后从中创建一个目标文件。之后,我想将此对象文件放入已经提到的存档文件中。 这基本上意味着 我想从C程序调用Go函数。我已经阅读了这个问题,虽然它告诉我可以通过GCCGO实现我想要的东西,但是如何做到这一

  • 当我在swift项目中访问swift类时,它工作得很好,但当我试图访问swift中的objective c类时,我无法访问,并且我还在swift项目中桥接了objective c文件。

  • 我需要一个简单的Java服务,它在系统启动时启动,并使用共享库与一些使用POSIX线程的功能。在实现JNI接口时,我遇到了一个问题,它不允许我从本地代码调用Java方法。GetMethodID()返回not NULL,所以我认为它做得很好。也没有任何可疑的错误可以帮助。所以我在log中添加了很多输出,并为此准备了一个简单的java测试。(下面列出了所有代码,但是project也可以在github的