使用RestSharp的c#中的简单graphql客户端 - 底层连接已关闭错误

时间:2017-09-09 22:02:50

标签: c# graphql

我有一个用NodeJS + ExpressJS + MongoDB编写的graphql服务器,我可以运行以下突变:

enter image description here

我需要在C#桌面应用程序上使用graphql api。所以,我决定在C#中创建一个简单的GraphQL客户端,如下所示:

https://github.com/latheesan-k/simple-graphql-client/blob/master/SimpleGraphQLClient/SimpleGraphQLClient.cs

我这样用:

var client = new SimpleGraphQLClient("https://tweetserver.dynamic-dns.net/graphql");

var query = @"
    mutation {
        signup(
            email: $email
            fullName: $fullName
            password: $password
            avatar: $avatar
            username: $username
        ) {
            token
        }
    }
";

dynamic signup = client.Execute(query, new
{
    email = "test-user3@domain.com",
    fullName = "Test User",
    password = "123456",
    avatar = "https://randomuser.me/api/portraits/women/0.jpg",
    username = "testuser3"
});

if (signup != null && signup.error == null)
{
    Console.WriteLine((string)signup.token);
}
else
{
    Console.WriteLine("Error - {0}", signup.error);
}

当我运行测试仪时,我收到以下错误:

  

错误 - 基础连接已关闭:意外错误   在发送时发生。

我知道graphql api端点是有效的并且按预期工作(参见第一个屏幕截图):

https://tweetserver.dynamic-dns.net/graphql https://tweetserver.dynamic-dns.net/graphiql

任何想法可能出错?

1 个答案:

答案 0 :(得分:0)

我想我已经明白了。我正在使用来自https://cipherli.st的LetsEncrypt免费SSL和nginx规则,而NginX(运行ssl +规则的反向代理)拒绝通过RestSharp从我的c#graphql客户端连接。

要解决此错误,您只需将其添加到您的应用中:

ServicePointManager.SecurityProtocol = 
    SecurityProtocolType.Tls12 | 
    SecurityProtocolType.Tls11 | 
    SecurityProtocolType.Tls;