问题
I'm having this error... I'm using ASP.NET Core with the last version of driver C#.
The wait queue for acquiring a connection to server [server:port] is full.
Failed Method:
MongoDB.Driver.Core.ConnectionPools.ExclusiveConnectionPool+AcquireConnectionHelper.CheckingOutConnection
Call Stack:
MongoDB.Driver.MongoWaitQueueFullException
MongoDB.Driver.Core.ConnectionPools.ExclusiveConnectionPool+AcquireConnectionHelper.CheckingOutConnection
MongoDB.Driver.Core.ConnectionPools.ExclusiveConnectionPool+<AcquireConnectionAsync>d__35.MoveNext
[external code]
MongoDB.Driver.Core.Servers.ClusterableServer+<GetChannelAsync>d__40.MoveNext
[external code]
MongoDB.Driver.Core.Operations.FindOperation`1+<ExecuteAsync>d__107.MoveNext
[external code]
MongoDB.Driver.OperationExecutor+<ExecuteReadOperationAsync>d__1`1.MoveNext
[external code]
MongoDB.Driver.MongoCollectionImpl`1+<ExecuteReadOperationAsync>d__59`1.MoveNext
[external code]
MongoDB.Driver.IAsyncCursorSourceExtensions+<FirstOrDefaultAsync>d__5`1.MoveNext
[external code]
Microsoft.ApplicationInsights.AspNet.ExceptionTrackingMiddleware+<Invoke>d__4.MoveNext
I have a Singleton DB Context.
Example API Controller:
[HttpPut]
        [Route("UpdatePosition")]
        public async Task<IActionResult> UpdatePosition([FromBody]AreaDto dto)
        {
            var idUser = User.GetUserId();
            if (dto == null)
                return HttpBadRequest("Fail request");
            _service.IdUser = idUser;
            var item = await _service.UpdateAreaPosition(dto);
            if (item == null)
                return HttpBadRequest("Fail request");
            return Ok(item);
        }
Service method:
public async Task<string> UpdateAreaPosition(AreaDto dto)
        {
            var area = await GetArea(dto);
            if (area == null || dto.Position?.PositionLeft == null || dto.Position.PositionTop == null) return null;
            area.Position.PositionLeft = dto.Position.PositionLeft;
            area.Position.PositionTop = dto.Position.PositionTop;
            await _repositoryAreas.Update(area);
            return area.Id;
        }
The GetArea and Update method are from a Repository Pattern:
Update method:
public virtual async Task<T> Update(T entity)
    {
        await _collection.ReplaceOneAsync(x => entity.Id.Equals(x.Id), entity, new UpdateOptions { IsUpsert = true });
        return entity;
    }
Get Area Method:
 private async Task<Area> GetArea(AreaDto dto)
        {
            var area = await _repositoryAreas.FirstOrDefaultAsync(t => t.Id == dto.Id);
            if (area == null)
                return null;
            return area;
        }
I have many other methods using mongoDB, but this is an example...
Instance class IMongoDatabse:
private static IMongoDatabase GetDatabaseFromUrl(MongoUrl url)
        {
            var client = new MongoClient(url);
            return client.GetDatabase(url.DatabaseName); // WriteConcern defaulted to Acknowledged
        }
Any ideas?
来源:https://stackoverflow.com/questions/37135302/the-wait-queue-for-acquiring-a-connection-to-server-is-full-mongodb