在使用新部署的启用身份验证的MongoDB容器设置新环境时,我遇到了以下异常:"An unhandled exception has occurred while executing the request. MongoDB.Driver.MongoConnectionException: An exception occurred while opening a connection to the server. ---> System.NotSupportedException: Unable to create an authenticator."
在我的例子中,我使用了一个连接字符串,例如:mongodb://USER:PASSWORD@HOST:27017/?authMechanism=DEFAULT
。这个字符串在MongoDB Compass中运行得很好,但在我的.NET 6.0应用程序中却不行。
如果您查看MongoCredential.cs#L469中C#MongoDB驱动程序的源代码,您会发现在检查身份验证机制时抛出了此异常。
在连接字符串中指定了确切的身份验证机制后,所有异常都消失了!
示例:mongodb://USER:PASSWORD@HOST:27017/?authMechanism=SCRAM-SHA-256
希望其他在谷歌上搜索的人会发现我的答案有帮助!
快乐的编码。
从连接字符串中删除authMechanism=DEFAULT参数
对我来说,这只是将异常更改为unable to authenticate using sasl protocol mechanism scram-sha-256
经过一些尝试和错误,我通过将连接字符串更改为:使其正常工作
mongodb://USER:PASSWORD@HOST:27017/?authSource=admin
我不知道为什么需要将其作为默认值,并且SCRAM-SHA-256连接字符串在其他上下文中也能正常工作。。。
我也遇到过类似的问题,发现包含_
的用户名不想使用C#驱动程序。