Azure 应用服务中的 Squidex:MongoDb 连接无法连接到数据库 Squidex

时间:2021-02-18 00:50:06

标签: mongodb azure azure-web-app-service azure-appservice

我是 Squidex 和 MongoDB 的新手,我正在尝试按照本指南在 Azure 应用服务中设置 Squidex:

我已顺利完成设置,并且可以在本地连接到我的 MongoDb 实例,使用我在 Squidex Mongo 数据库中配置为管理员的用户也没有问题。

但是,我的应用服务无法启动并出现以下错误:

2021-02-18T00:45:27.806844798Z Unhandled exception. Squidex.Hosting.Configuration.ConfigurationException: MongoDb connection failed to connect to database Squidex.
2021-02-18T00:45:27.806899798Z
2021-02-18T00:45:27.806905498Z  ---> MongoDB.Driver.MongoAuthenticationException: Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1.
2021-02-18T00:45:27.806910099Z  ---> MongoDB.Driver.MongoCommandException: Command saslStart failed: Authentication failed..
2021-02-18T00:45:27.806914099Z    at MongoDB.Driver.Core.WireProtocol.CommandUsingQueryMessageWireProtocol`1.ProcessReply(ConnectionId connectionId, ReplyMessage`1 reply)
2021-02-18T00:45:27.806918499Z    at MongoDB.Driver.Core.WireProtocol.CommandUsingQueryMessageWireProtocol`1.ExecuteAsync(IConnection connection, CancellationToken cancellationToken)
2021-02-18T00:45:27.806931099Z    at MongoDB.Driver.Core.Authentication.SaslAuthenticator.AuthenticateAsync(IConnection connection, ConnectionDescription description, CancellationToken cancellationToken)
2021-02-18T00:45:27.806935599Z    --- End of inner exception stack trace ---
2021-02-18T00:45:27.806948099Z    at MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelperAsync(CancellationToken cancellationToken)
2021-02-18T00:45:27.806952999Z    at MongoDB.Driver.Core.Servers.Server.GetChannelAsync(CancellationToken cancellationToken)
2021-02-18T00:45:27.806956899Z    at MongoDB.Driver.Core.Operations.CreateIndexesOperation.ExecuteAsync(IWriteBinding binding, CancellationToken cancellationToken)
2021-02-18T00:45:27.806960799Z    at MongoDB.Driver.OperationExecutor.ExecuteWriteOperationAsync[TResult](IWriteBinding binding, IWriteOperation`1 operation, CancellationToken cancellationToken)
2021-02-18T00:45:27.806964699Z    at MongoDB.Driver.MongoCollectionImpl`1.ExecuteWriteOperationAsync[TResult](IClientSessionHandle session, IWriteOperation`1 operation, CancellationToken cancellationToken)
2021-02-18T00:45:27.806970799Z    at MongoDB.Driver.MongoCollectionImpl`1.MongoIndexManager.CreateManyAsync(IClientSessionHandle session, IEnumerable`1 models, CreateManyIndexesOptions options, CancellationToken cancellationToken)
2021-02-18T00:45:27.806974799Z    at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync, CancellationToken cancellationToken)
2021-02-18T00:45:27.806978699Z    at Squidex.Infrastructure.MongoDb.MongoRepositoryBase`1.InitializeAsync(CancellationToken ct) in /src/src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs:line 113
2021-02-18T00:45:27.806984099Z    --- End of inner exception stack trace ---
2021-02-18T00:45:27.806987899Z    at Squidex.Infrastructure.MongoDb.MongoRepositoryBase`1.InitializeAsync(CancellationToken ct) in /src/src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs:line 119
2021-02-18T00:45:27.806991899Z    at Squidex.Hosting.InitializerHost.StartAsync(CancellationToken cancellationToken)
2021-02-18T00:45:27.806995599Z    at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
2021-02-18T00:45:27.806999399Z    at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
2021-02-18T00:45:27.807003099Z    at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
2021-02-18T00:45:27.807006899Z    at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
2021-02-18T00:45:27.807930204Z    at Squidex.Program.Main(String[] args) in /src/src/Squidex/Program.cs:line 22

我在应用服务的 EVENTSTORE__MONGODB__CONFIGURATION 和 STORE__MONGODB__CONFIGURATION 应用程序设置中使用了与此类似的连接字符串:

mongodb://[USER_NAME]:[PASSWORD]@[MONGO_IP]:27017

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,Squidex 要求连接字符串也包括 authSource。如果您遇到此问题,请将 ?authSource=[DatabaseName] 添加到您的连接字符串中。就我而言,这是必需的:

mongodb://[USER_NAME]:[PASSWORD]@[MONGO_IP]:27017?authSource=Squidex