[英]ASP.NET Membership Provider Reset Password Failure on Remote Servers
[英]ASP.NET 6 HotChocolate SchemaStitching failure on remote schema fields
我正在尝试更改GitHub 上的 SchemStitching示例,以从产品服务而不是网关服务中使用它。
这个想法是扩展产品的模式并包括来自库存和评论的信息。
我在产品服务中所做的更改:
添加带有产品类型扩展名的stitiching.graphql
文件
extend type Product {
inStock: Boolean
@delegate(
schema: "inventory",
path: "inventoryInfo(upc: $fields:upc).isInStock")
shippingEstimate: Int
@delegate(
schema: "inventory"
path: "shippingEstimate(weight: $fields:weight price: $fields:price)")
reviews: [Review] @delegate(schema: "reviews" path:"reviewsByProduct(upc: $fields:upc)")
}
更改Startup.cs
以注册用于清单和评论的远程模式。
const string Inventory = "inventory";
const string Reviews = "reviews";
builder.Services.AddHttpClient(Inventory,
c => c.BaseAddress = new Uri("http://localhost:64309/graphql"));
builder.Services.AddHttpClient(Reviews,
c => c.BaseAddress = new Uri("http://localhost:64317/graphql"));
builder.Services
.AddSingleton<ProductRepository>()
.AddGraphQLServer()
.AddQueryType<Query>()
.AddRemoteSchema(Inventory, ignoreRootTypes: true)
.AddRemoteSchema(Reviews, ignoreRootTypes: true)
.AddTypeExtensionsFromFile("./Stitching.graphql");
当我在运行以下查询的 hotchocolate playground 中运行应用程序(运行产品、库存、评论服务)时
query {
product(upc: 3) {
name
inStock
}
}
我收到了inStock
的错误信息
{
"errors": [
{
"message": "Variable `__fields_upc` is required.",
"extensions": {
"code": "HC0018",
"variable": "__fields_upc",
"remote": {
"message": "Variable `__fields_upc` is required.",
"extensions": {
"code": "HC0018",
"variable": "__fields_upc"
}
},
"schemaName": "inventory"
}
}
],
"data": {
"product": {
"name": "Chair",
"inStock": null
}
}
}
我不明白为什么 upc 字段没有通过。 似乎产品服务验证失败,因为我没有看到任何调用库存服务。
任何线索是什么问题?
我正在使用 ASP.NET 6
<PackageReference Include="HotChocolate.AspNetCore" Version="12.9.0" />
<PackageReference Include="HotChocolate.Stitching" Version="12.9.0" />
编辑
似乎$fields:upc
没有得到库存模式的解析,因为如果我用 3 的硬编码 upc 更新拼接模式
extend type Product {
inStock: Boolean
@delegate(
schema: "inventory",
path: "inventoryInfo(upc: 3).isInStock")
}
并查询数据
query {
product(upc: 3) {
upc
name
inStock
}
}
我得到了预期的结果
{
"data": {
"product": {
"upc": 3,
"name": "Chair",
"inStock": true
}
}
}
也没有? 您的第一个查询没有错误所说的“upc”字段。
query {
product(upc: 3) {
upc
name
inStock
}
}
我发现了一个与您的场景类似的 graphql 查询示例: https ://chillicream.com/docs/hotchocolate/fetching-data/fetching-from-rest
我知道这可能有点晚了,但我遇到了同样的问题并且能够解决它。 我问了一个类似的问题,最近我添加了一个答案。
如果有人遇到相同的错误,您可以在此处查看解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.