我在Azure中部署了一个由计时器触发的功能,该功能每5分钟执行一次对API的GET请求,并将结果存储到服务器中托管的MongoDB中。
在我的本地主机上运行该函数以访问同一MongoDB服务器可以正常工作,但是在Azure上运行该函数时,每10分钟(或两次执行函数)我就会得到一个异常,如下所示:
异常抛出如下:
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
我尝试更改MongoDB客户端配置,但是没有用。为什么在Azure而不是localhost仿真器上会发生这种情况?更重要的是,是否有任何修复或解决方法?
谢谢!
答案 0 :(得分:0)
您在此处打开的连接实际上是5个连接的池(默认情况下),因此您可以直接连接并保持打开状态。我的猜测是您会间歇性地失去与mongolab的连接,并且连接会在这种情况下终止。希望启用auto_reconnect可以解决该问题。
您可以编写ping请求,以检查连接是否有效,如下所示。
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
server.Ping();
或者在建立连接时
client = new MongoClient("mongodb://localhost");
database = client.GetDatabase(mongoDbStr);
bool isMongoLive = database.RunCommandAsync((Command<BsonDocument>)"{ping:1}").Wait(1000);
if(isMongoLive)
{
// connected
}
else
{
// couldn't connect
}
希望有帮助。