0

edit 00: 注: このメッセージは GraphiQL インターフェイスから送信されています。「Banana Cake Pop」UI で同じクエリを試したところ、このクエリを実行してもメッセージが返されませんでした。


Hot Chocolate を使用して、ASP.NET Web サーバーで GraphQL サブスクリプションを作成しようとしているときに、このチュートリアルとまったく同じコードを使用しているときに、サーバーからエラー フィードバックを受け取りました。

エラーメッセージ

{
  "errors": [
    {
      "message": "Result type not supported.",
      "extensions": {
        "code": "RESULT_TYPE_NOT_SUPPORTED"
      }
    }
  ]
}

チュートリアルを正確に再現しようとしましたが、うまくいきません。また、これらの例から機能する例を取得することもできません。サブスクリプションのみですが、クエリとミューテーションはすべて完全に正常に機能しています。

サービス構成

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    // [GRAPHQL]
    services.AddInMemorySubscriptionProvider();

    services.AddGraphQL(SchemaBuilder.New()
        .AddQueryType<ShuttleQuery>()
        .AddMutationType<ShuttleMutation>()
        .AddType<Subscription>()
        .BindClrType<string, StringType>()
        .Create()
    );
}

アプリケーション構成

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }

    app.UseStaticFiles();

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapControllers();
    });


    // [GRAPHQL]
    app.UseWebSockets().UseGraphQL("/graphql");
    app.UseGraphQL("/graphql");
}

チュートリアルに基づく一般的なサブスクリプション タイプ

public class Subscription
            
{
    [SubscribeAndResolve]
    public async IAsyncEnumerable<string> OnMessageAsync()
    {
        yield return "Hey!";
        await Task.Delay(2000);
        yield return "It Changed?";
        await Task.Delay(2500);
        yield return "It Never Changes Because It Doesn't W";
    }
}

私はこれで数日間立ち往生しています。どんな助けでも大歓迎です。

4

2 に答える 2