簡體   English   中英

Simple.odata.client 停止尋找#metadata

[英]Simple.odata.client stops at looking for #metadata

我正在構建一個客戶端以從 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


然后自然退出。 沒有錯誤。 我覺得我錯過了一些非常基本的東西,但我就是找不到。 如果有人對此有一些指示,那就太棒了。

我找到了解決方案。 它不是來自 oData 請求本身。 這是因為此代碼要求對該代碼的調用也是等待。 我一直在使用以下

await restIngest();

並通過將其更改為來解決問題

restIngest.Wait();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM