无法使用 webApi 中的 mongoDB 连接到 Elmah

Unable to connect to Elmah with mongoDB in webApi

我正在开发一个 ASP.NET WebAPI2 项目,它使用 MongoDb 来存储一些使用 entity framework 的简单数据。我做的每个 ASP.NET 项目都喜欢使用 ELMAH 进行错误处理,所以我下载了 MongoDB 版本以及 Mongo.

的 C# 驱动程序

当我尝试导航到 /elmah.axd 时,处理程序被告知要在 web.config 中使用,我收到以下错误:

No connection could be made because the target machine actively refused it 127.0.0.1:27017

我的连接字符串如下所示:

<add name="elmah-mongodb" connectionString="mongodb://localhost:27017/elmah?w=0" />

mongoDB 告诉我它正在侦听此 IP 和端口号。我已经尝试更改我的 Mongod 配置,以便它绑定到端口 27017 上的 127.0.0.1,即使它是默认设置。我还没有对 mongo 应用任何权限,我也尝试先创建数据库,但没有成功。我试过关闭 windows 防火墙和防病毒软件,并确保允许它通过该端口。这是 运行 从 Docker 调试的应用程序,我不确定它是否与此有关。查看完整错误的屏幕截图。

更新:还尝试使用默认设置启动 mongod,因为我使用配置文件将数据指向不同的目录。还尝试使用 --bind_ip_all 开关。

我找到了答案。 Docker 不允许您使用 localhost 或 127.0.0.1,因为它被视为一个单独的实例。您需要告诉 mongod 监听另一个 IP 并使用它。如果您使用:

mongod --bind_ip=0.0.0.0

它将侦听默认端口 27017 上的所有可用 IP。或者您可以将它绑定到其他可用 IP 之一。

所以也将您的连接字符串更改为:

<add name="elmah-mongodb" connectionString="mongodb://x.x.x.x:27017/elmah?w=0" />

其中 x.x.x.x 是您选择使用的可用 IP。