首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simple.odata.client仅限于查找#metadata

Simple.odata.client仅限于查找#metadata
EN

Stack Overflow用户
提问于 2019-10-31 07:38:33
回答 1查看 571关注 0票数 0

我正在构建一个从V4 oData服务返回数据的客户端。下面的代码在LinqPad、v5和v6中运行良好。但在Visual Studio中实现它似乎只是为#元数据创建GET请求,然后结束。

我主要是在Windows10上创建它,但我也在Mac上的VS中尝试过。它运行,但也只为#元数据创建GET。

我已经创建了新的、干净的项目。我又回到了使用框架GIT站点中最简单的请求示例。我尝试过使用.Net核心(2.2和3.0)、.Net标准和.Net框架的新项目。

代码语言:javascript
复制
var credentials = new NetworkCredential("username", "password");
var URL = new Uri("http://servername:60080/#########.odata/");
var settings = new ODataClientSettings(URL, credentials)
{
   IgnoreResourceNotFoundException = true,
   OnTrace = (x, y) => Console.WriteLine(string.Format(x, y)),
   PayloadFormat = ODataPayloadFormat.Json,
   IgnoreUnmappedProperties = true,
   RenewHttpConnection = true,
   TraceFilter = ODataTrace.All,
   PreferredUpdateMethod = ODataUpdateMethod.Patch
};

var client = new ODataClient(settings);
var annotations = new ODataFeedAnnotations();

IEnumerable<APPLICATIONS_RAW> packages = await client
       .For<APPLICATIONS_RAW>()
       .Filter(f => f.TIMEFRAME >= convertedStartOffset)
       .Filter(f => f.TIMEFRAME < convertedEndOffset)
       .FindEntriesAsync(annotations);

while (annotations.NextPageLink != null)
{
    countPages++;
    IEnumerable<APPLICATIONS_RAW> packages2 = await client
       .For<APPLICATIONS_RAW>()
       .FindEntriesAsync(annotations.NextPageLink, annotations);

     packages = packages.Concat(packages2);
}

代码通常返回以下内容(后跟数据)。

代码语言:javascript
复制
GET request: http://servername:60080/#####.odata/$metadata
Request
completed: OK

GET request: http://servername:60080/#####.odata/APPLICATIONS_RAW?$filter=...

在Visual Studio中,我得到的只是...

代码语言:javascript
复制
GET request: http://servername:60080/#####.odata/$metadata


然后它就会自然退出。没有错误。我觉得我遗漏了一些非常基本的东西,但我就是找不到。如果有人对此有一些建议,那就太棒了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-07 07:50:34

我找到了解决方案。而且它不是来自oData请求本身。这是因为这段代码要求对这段代码的调用也是await。我一直在使用下面的代码

代码语言:javascript
复制
await restIngest();

并通过将其更改为

代码语言:javascript
复制
restIngest.Wait();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58635052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档