为什么我的 gremlin.net gremlin 客户端无法使用 azure cosmos graph db

Why is my gremlin.net gremlin client not working with azure cosmos graph db

我已经设置了一个无服务器 azure cosmos graph 数据库帐户,现在我正在尝试使用以下代码连接到它:

.AddSingleton(s =>
    {
        var connectionPool = new ConnectionPoolSettings
        {
            MaxInProcessPerConnection = 32,
            PoolSize = 4,
            ReconnectionAttempts = 4,
            ReconnectionBaseDelay = TimeSpan.FromSeconds(1)
        };
        var server = new GremlinServer("<project-name>.documents.azure.com", 443, true, "/dbs/<DatabaseName>/colls/<GraphName>", "<primary key>");
        return new GremlinClient(server, connectionPoolSettings: connectionPool);
    })

GremlinClient 抛出异常消息

The server returned status code '200' when status code '101' was expected.

我正在使用 Gremlin.Net 3.6.0 和 NET 6 有什么想法吗?

如果您与 Gremlin.Net 的早期版本连接良好,您可能想要恢复。 According to their website 他们支持的版本是 3.4.6。虽然 3.4.x 的更高版本可能会工作,但它可能需要更多配置(例如,我认为您可能必须切换序列化程序,因为我认为 CosmosDB 不支持 GraphBinary 序列化程序)并且您必须注意不使用较新版本的 TinkerPop 具有而 3.4.6 没有的某些功能。

问题已通过更改

中的 uri 得到解决
<project-name>.documents.azure.com

<project-name>.gremlin.cosmosdb.azure.com

https://docs.microsoft.com/en-us/azure/cosmos-db/graph/gremlin-api-faq#why-am-i-getting-the--websocketexception--the-server-returned-status-code--200--when-status-code--101--was-expected--error-