簡體   English   中英

C# OData 使用查詢參數作為輸入但返回自定義響應

[英]C# OData use query parameter as input but return a custom response

我正在嘗試向我的 OData 控制器添加一個新方法,該方法的目的是根據給定的過濾器生成用戶報告文件。 該過濾器將應用於系統中的所有用戶,過濾后將生成剩余用戶的報告。 該報告是一個 PDF 文件,因此我將其作為 byte[] 返回,客戶端必須將其寫入磁盤。 這是我的代碼:

    [HttpGet]
    public IHttpActionResult GenerateUsersReport(ODataQueryOptions options)
    {
        var users = (IQueryable<Incident>)options.ApplyTo(_LINQ.UserQuery);
        var usersIDs = users.Select(user => user.ID);
        byte[] report = // Generate query according to the user IDs
        return new FileResponse(report, "application/pdf");
    }

但是這樣做時,我收到一條錯誤消息

500 無法創建 EDM 模型,因為控制器“用戶”上的操作“GenerateUsersReport”具有未實現 IEnumerable 的返回類型“System.Web.Http.IHttpActionResult”。

從那個錯誤中,我知道 OData 會期望 IEnumerable 之后再次應用查詢。 如何消除該問題並僅在我的代碼中使用查詢,如圖所示,而不是在返回后對其進行過濾?

我知道這是舊的,但它仍然會在搜索中彈出。 所以,現在這將起作用(在提出問題時它可能不起作用):

public IHttpActionResult GenerateUsersReport(ODataQueryOptions<User> options)

如果我假設這是在名為User實體上執行的。

暫無
暫無

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

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