首页 > 解决方案 > .Net Core 3.1 使用来自 C#/WPF 的 GraphQLHttpClient 卡住 - 但适用于 ConsoleApp

问题描述

我创建了一个小型 GraphQl 服务器——它在 Banana Cake Pop 中运行得非常好。

然后我创建了一个小型C#/.Net Core 3.1 WPF 应用程序- 它有一个使用GraphQL.Client 3.2.2GraphQL.Client.Serializer.Newtonsoft 3.2.2的类库

它还有一个像这样的类来调用 GraphQL Endpoint:

    public class RepositoryBase
{
    protected GraphQLHttpClient GraphQLHttpClient { get; private set; }

    public RepositoryBase()
    {
        GraphQLHttpClient = new GraphQLHttpClient("http://xxx/graphql/",
                                                    new NewtonsoftJsonSerializer());
    }
}

public class ArtRepository : RepositoryBase
{
    public List<Art> GetArterByGruppe(short GruppeId)
    {
        var queryString = @"query { arter(where: { and:[{ gruppeId: { eq: 1200} } { su: { eq: false} } { setIDk: { eq: true} }]}
                      order: {artNavn:ASC}) {
                      artNavn 
                      artId 
                      gruppe {
                          gruppeNavn 
                          gruppeId 
                      } 
                    }
                }";

        var request = new GraphQLRequest
        {
            Query = queryString
        };

        var result = GraphQLHttpClient.SendQueryAsync<ArtResponse>(request).ConfigureAwait(false);
        return result.GetAwaiter().GetResult().Data.Arter;
    }
}

如果我从 WPF 应用程序调用此方法 - 就像在 Windows Loaded 事件中一样 - 对 GrapQl 服务器的调用会卡住 - 没有错误。

            var repository = new ArtRepository();
        var x = repository.GetArterByGruppe(1700);

所以 - 绝望 - 我在 WPF 解决方案中创建了一个ConsoleApp 项目- 对 ArtRepository 类进行相同的调用 - 它运行得非常好并返回数据。

我不明白 WPF 应用程序如何以卡住的方式影响 GraphQL 客户端?

标签: c#wpfgraphqlgraphqlclient

解决方案


推荐阅读