C# OData$expand包含不正确的上下文链接
我使用ASP.NET Web API 2 OData服务公开了以下端点:C# OData$expand包含不正确的上下文链接,c#,asp.net,.net,odata,C#,Asp.net,.net,Odata,我使用ASP.NET Web API 2 OData服务公开了以下端点: /entity1('key')/entity2('key')/entity3('key')/entity4('key') 当我执行/entity1('key')/entity2('key')/entity3?$expand=entity4时,我收到了一个JSON响应,其中带有正确的“@odata.context”: 但是,当我执行/entity1('key')/entity2('key')/entity3('key')?
/entity1('key')/entity2('key')/entity3('key')/entity4('key')
当我执行/entity1('key')/entity2('key')/entity3?$expand=entity4
时,我收到了一个JSON响应,其中带有正确的“@odata.context”
:
但是,当我执行/entity1('key')/entity2('key')/entity3('key')?$expand=entity4
时,我收到一个错误的“@odata.context”
,带有两个键:
"@odata.context": "https://host:port/$metadata#entity1('key')/entity2('ket')/entity3",
"value": [
{
...,
"entity4@odata.context": "https://host:port/$metadata#entity1('key')/entity2('key')/entity3('key')('key')/entity4",
"entity4": [
{
...
}
]
}
这会在使用Microsoft的OData客户端执行时导致异常:
“上下文URL”https://host:port/$metadata#entity1('key')/entity2('key')/entity3('key')('key')/entity4'无效。“
好吧,别开玩笑了。这可能是什么原因造成的
更新
我记录了一个问题。我们来看看会发生什么。我找到了一个解决办法: 使用
$filter
而不是键:/entity1('key')/entity2('key')/entity3?$filter=key eq'key'和$expand=entity4
提供了正确的响应:
"@odata.context": "https://host:port/$metadata#entity1('key')/entity2('ket')/entity3",
"value": [
{
...,
"entity4@odata.context": "https://host:port/$metadata#entity1('key')/entity2('key')/entity3('key')/entity4" ,
"entity4": [
{
...
}
]
}
"@odata.context": "https://host:port/$metadata#entity1('key')/entity2('ket')/entity3",
"value": [
{
...,
"entity4@odata.context": "https://host:port/$metadata#entity1('key')/entity2('key')/entity3('key')/entity4" ,
"entity4": [
{
...
}
]
}