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";
}
}
私はこれで数日間立ち往生しています。どんな助けでも大歓迎です。