在WebApp中时,Cosmos DB Graph无法连接:远程主机强行关闭了现有连接

时间:2018-10-24 20:07:10

标签: azure-cosmosdb

我有一个控制台应用程序,它能够连接并查询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应用程序下运行时是否有特殊要求?

1 个答案:

答案 0 :(得分:0)

好,以防万一有人在尝试使用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.Http升级到System.Net.Http 4.3.1

另外,对于Web应用程序来说,这是Visual Studio的问题,它与System.Net.Http的某些版本捆绑在一起,我相信2017年有4.1.0,因此,如果您安装任何需要更新的版本版本,则必须确保您的WebApp具有nuget版本。