C# 参数类型为“的OData函数;实体或实体引用的集合”;

C# 参数类型为“的OData函数;实体或实体引用的集合”;,c#,asp.net,web-services,odata,C#,Asp.net,Web Services,Odata,我有一个关于OData绑定函数的问题,该函数的参数类型为“实体集合或实体引用”。当我试图调用这个函数时,我没有进入我的函数,但是得到了HTTP错误(见下文)。此参数类型的说明来自。 我正在用ASP.NETMVC2和ASP.NETOData5.7.0编程语言C#实现ODataV4服务 我的函数代码: [HttpGet] public IHttpActionResult GetTimeSeriesTest2([FromODataUri] IEnumerable<Tag> tags)

我有一个关于OData绑定函数的问题,该函数的参数类型为“实体集合或实体引用”。当我试图调用这个函数时,我没有进入我的函数,但是得到了HTTP错误(见下文)。此参数类型的说明来自。 我正在用ASP.NETMVC2和ASP.NETOData5.7.0编程语言C#实现ODataV4服务

我的函数代码:

[HttpGet]  
public IHttpActionResult GetTimeSeriesTest2([FromODataUri] IEnumerable<Tag> tags)  
{  
     ... some Code  
}   
我的OData查询在Internet Explorer中使用:
带查询:
http://localhost:51100/odata/Tags/Default.GetTimeSeriesTest2(Tags=@x)?@x={\“value\”:[{\“@odata.id\”:\”('0')\”}]}
->我收到一个HTTP错误404.0–未找到

如果我将函数解除绑定并在没有名称空间“Default”的情况下调用它,那么将执行该函数,但tags参数为空。 如果我将IEnumerable类型从Tag更改为Int并使用以下查询,则一切正常: http://localhost:51100/odata/Tags/Default.GetTimeSeriesTest2(Tags=@x)?@x=[4,5,6]

出了什么问题以及如何解决?
欢迎并感谢您的帮助

提前谢谢


Klaus Peter

您应该对标记数据参数进行编码。 url应该是

http ://localhost:51100/odata/Tags/Default.GetTimeSeriesTest2(tags=@x)?@x=%7B%22value%22%3A%5B%7B%22%40odata.id%22%3A%22http%3A%2F%2Flocalhost%3A51100%2Fodata%2FTags('0')%22%7D%5D%7D

您可以使用JS中的
encodeURIComponent
方法进行编码。

谢谢您的回答。不幸的是,这对我不起作用。在Internet Explorer中,我得到一个HTTP 404:NotFound错误,使用Fiddler我得到一个HTTP 502:DNS查找失败错误。
config.MapODataServiceRoute("OData", "odata", model: GetEdmModel());
http ://localhost:51100/odata/Tags/Default.GetTimeSeriesTest2(tags=@x)?@x=%7B%22value%22%3A%5B%7B%22%40odata.id%22%3A%22http%3A%2F%2Flocalhost%3A51100%2Fodata%2FTags('0')%22%7D%5D%7D