0

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

我主要在 Windows 10 上创建它,但我也在 VS for Mac 中尝试过。它运行但也只为#metadata 创建 GET。

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

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);
}

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

GET request: http://servername:60080/#####.odata/$metadata
Request
completed: OK

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

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

GET request: http://servername:60080/#####.odata/$metadata


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

4

1 回答 1

0

我找到了解决方案。它不是来自 oData 请求本身。这是因为此代码要求对该代码的调用也是等待。我一直在使用以下

await restIngest();

并通过将其更改为来解决问题

restIngest.Wait();
于 2019-12-06T23:50:33.647 回答