订阅热巧克力 "RESULT_TYPE_NOT_SUPPORTED"
Hot Chocolate "RESULT_TYPE_NOT_SUPPORTED" on subscription
编辑 00: 注意:
此消息来自 GraphiQL 接口。当我在 'Banana Cake Pop' UI 中尝试相同的查询时,执行此查询时没有返回任何消息。
尝试在 ASP.NET 网络服务器上创建 GraphQL 订阅时,使用 Hot Chocolate,使用在 this tutorial 中找到的完全相同的代码,我收到来自服务器的错误反馈。
错误信息
{
"errors": [
{
"message": "Result type not supported.",
"extensions": {
"code": "RESULT_TYPE_NOT_SUPPORTED"
}
}
]
}
我已尝试完全重新创建教程,但没有用。我也无法从 these examples 获得任何示例。不过,它仅适用于订阅,查询和突变都可以正常工作。
服务配置
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";
}
}
我已经坚持了好几天了,如果有任何帮助,我们将不胜感激。
问题主题错误消息仅在 GraphiQL 中显示
长话短说;博士:
我通过使用 .Net Core 3.0 控制台应用程序而不是 ASP.NET Web 应用程序项目类型解决了这个问题。
尽管 GraphiQL 是唯一 returns 上述消息的编辑器,但无论您如何尝试使用订阅,问题仍然存在。它只是缺少其他编辑器中的错误消息。
一定有某种我不知道的后台配置(我是 C#/.NET 的新手)。我是 运行 .NET Core 控制台应用程序和 ASP.NET Web 应用程序中的示例星球大战项目文件。他们有相同的文件、正确的名称间距、成功的构建、突变和查询在两个项目中工作。
但只有控制台项目允许订阅。
除了将根项目作为 .NET Core 3.0 控制台应用程序启动之外,我真的不知道如何解决这个问题,如果其他人知道我很想更好地了解这个问题的真正含义。
我在尝试从代码(FE:react,BE:.net core)调用订阅时遇到了同样的错误。问题是我通过 http 调用订阅...订阅通过 WebSocket 工作。
因此,请检查您的应用程序是否通过 WEbSocket 调用订阅。
在这里您可以看到如何配置客户端以在 http 和 ws 之间拆分请求:https://github.com/howtographql/react-apollo/blob/master/src/index.js
编辑 00: 注意: 此消息来自 GraphiQL 接口。当我在 'Banana Cake Pop' UI 中尝试相同的查询时,执行此查询时没有返回任何消息。
尝试在 ASP.NET 网络服务器上创建 GraphQL 订阅时,使用 Hot Chocolate,使用在 this tutorial 中找到的完全相同的代码,我收到来自服务器的错误反馈。
错误信息
{
"errors": [
{
"message": "Result type not supported.",
"extensions": {
"code": "RESULT_TYPE_NOT_SUPPORTED"
}
}
]
}
我已尝试完全重新创建教程,但没有用。我也无法从 these examples 获得任何示例。不过,它仅适用于订阅,查询和突变都可以正常工作。
服务配置
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";
}
}
我已经坚持了好几天了,如果有任何帮助,我们将不胜感激。
问题主题错误消息仅在 GraphiQL 中显示
长话短说;博士: 我通过使用 .Net Core 3.0 控制台应用程序而不是 ASP.NET Web 应用程序项目类型解决了这个问题。
尽管 GraphiQL 是唯一 returns 上述消息的编辑器,但无论您如何尝试使用订阅,问题仍然存在。它只是缺少其他编辑器中的错误消息。
一定有某种我不知道的后台配置(我是 C#/.NET 的新手)。我是 运行 .NET Core 控制台应用程序和 ASP.NET Web 应用程序中的示例星球大战项目文件。他们有相同的文件、正确的名称间距、成功的构建、突变和查询在两个项目中工作。
但只有控制台项目允许订阅。
除了将根项目作为 .NET Core 3.0 控制台应用程序启动之外,我真的不知道如何解决这个问题,如果其他人知道我很想更好地了解这个问题的真正含义。
我在尝试从代码(FE:react,BE:.net core)调用订阅时遇到了同样的错误。问题是我通过 http 调用订阅...订阅通过 WebSocket 工作。 因此,请检查您的应用程序是否通过 WEbSocket 调用订阅。 在这里您可以看到如何配置客户端以在 http 和 ws 之间拆分请求:https://github.com/howtographql/react-apollo/blob/master/src/index.js