Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OData$expand包含不正确的上下文链接_C#_Asp.net_.net_Odata - Fatal编程技术网

C# OData$expand包含不正确的上下文链接

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')?

我使用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')?$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": [
    {
      ...
    }
  ]
}