代码生成的V4 odata客户端无法修改为字符串参数查询

时间:2018-10-12 16:39:48

标签: odata-v4

让我在开始之前说我是OData的新手,并且找不到任何人在做我要解释的事情。我们需要将应用程序从2层移植到3层,并且我们的其他旧版应用程序为此使用.NET Remoting ...(最终也将需要进行此升级。)嗯,我们打算使用WCF,但是Microsoft似乎已经已经放弃了对OData的支持...所以就在这里。带有Web Api 2.2的OData V4。简而言之,我很难在客户端形成正确的路由。

在Fiddler中,我可以通过Uri访问OData服务:

  

http://localhost:port/odata/Templates?templateName='MyTemplate'&$expand=Items

它确实以我期望的方式带回了我选择的模板对象。

使用Microsoft为该版本的OData服务构建的代码生成客户端,我无法强制代理服务生成上述Uri。调试时,我发现可以构成Uri的最好方法是:

  

http://localhost:port/odata/Templates('MyTemplate')?$expand=Items

,但是如果您以这种方式实现请求,则返回404找不到。

我创建上面格式错误的路由的C#代码如下:

string serviceUri = "http://localhost:port/odata/";
var container = new Default.Container( new Uri( serviceUri ) );
var dictLookup = new Dictionary<string, object>() {{"TemplateName", "MyTemplate"}};
var result = container.Templates.ByKey( dictLookup ).Expand("Items");

我已经找到并尝试使用DataServiceContext(容器)中的方法.AppendRequestUri(“ templateName ='MyTemplate'),但是无论我将其放在什么参数中,这似乎都不会改变服务的RequestUri。

问题是如何在客户端应用程序(DataServiceContext)中获取代码生成的容器以形成Uri,如下所示:

  

http://localhost:port/odata/Templates?templateName='MyTemplate'&$expand=Items

任何人对此的回应将不胜感激。

肯特

0 个答案:

没有答案