2

我有能够连接和查询 Cosmos DB Graph 实例的控制台应用程序,但是当我在 WebApp 中尝试相同的操作时,每次都会失败,并出现错误“现有连接被远程主机强行关闭”

我没有做任何特别的事情。代码很简单

var gremlinServer = new GremlinServer(hostname, port, enableSsl: true, username: user, password: pass);
using (var gremlinClient = new GremlinClient(gremlinServer))
{
    results = await gremlinClient.SubmitAsync<dynamic>("g.V().limit(10)");
}

在 Web 应用程序下运行时有什么特殊要求吗?

4

1 回答 1

1

好的,以防万一有人在尝试使用 Gremlin.Net 和 Cosmos DB 时遇到问题。Gremlin.Net 的每个版本都有问题,但每个版本都有一组非常具体的问题。例如,我从 3.3.1 开始,但没有正确签名。我当时尝试安装最新的 3.3.4,但它在安装 nuget 时几乎忘记了所有依赖项,所以你甚至无法运行它。

我坚持使用 3.3.3,这个也有问题。你不能只做,new GremlinClient(gremlinServer)否则你会得到 Null 异常,你必须用new GremlinClient(gremlinServer, new GraphSON2Reader(), new GraphSON2Writer(), GremlinClient.GraphSON2MimeType)

此外,它会带来 System.Net.Http 4.3.0,但它有它自己的模糊异常

类型违反了继承安全规则:“System.Net.Http.WebRequestHandler”。派生类型必须要么与基类型的安全可访问性相匹配,要么难以访问。

所以安装后Gremlin.Net 3.3.3,升级System.Net.HttpSystem.Net.Http 4.3.1

此外,对于 Web 应用程序,这是 Visual Studio 的问题,它与某些版本捆绑在一起System.Net.Http,我相信 2017 有4.1.0,所以如果你安装任何需要更新版本的东西,你必须确保你的 WebApp 有 nuget 版本.

于 2018-10-24T22:06:04.523 回答