如何使用简单Odata客户端查询FileStreamResult

问题描述

我正在尝试使用简单的odata客户端从odata asp.net核心Web API获取流。我的odata函数控制器永远不会被调用。有提示吗?

模型配置:

var GetMyModelCsvConf = builder.EntityType<MyModel>().Collection.Function("GetMyModelCsv").Returns<FileStreamResult>();
GetMyModelCsvConf.Parameter<Guid>("MyId");
GetMyModelCsvCsvConf.Parameter<string>("Culture");

控制器:

[HttpGet]
[Produces("application/octet-stream")]
[ProducesResponseType(typeof(ODataValue<FileStreamResult>),Status200OK)]
[ProducesResponseType(Status404NotFound)]
[EnableQuery(AllowedQueryOptions = None)]
public async Task<IActionResult> GetMyModelCsv(Guid MyId,string Culture)
{
   var Results = _Query.Get(x=>x.MyId == MyId);
   using (MemoryStream ms = new MemoryStream())
   {
     using (TextWriter tw = new StreamWriter(ms))
     using (CsvWriter csv = new CsvWriter(tw,new System.Globalization.CultureInfo(Culture)))
     {
        csv.WriteRecords<MyModel>(Results);
     }

     return File(ms,"application/octet-stream");
    }
}

请求

var CsvFile = await _ODataApiService.ODataClient
                        .For<MyModel>("MyModels")
                        .Function("GetMyModelCsv")
                        .Set(new
                        {
                            MyId = MyId,Culture = System.Globalization.CultureInfo.CurrentCulture.Name
                        }).Media().GetStreamAsArrayAsync();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)