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