首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在ASP.NET内核中流式传输和部署IEnumerable

在ASP.NET内核中流式传输和部署IEnumerable
EN

Stack Overflow用户
提问于 2018-12-07 14:33:51
回答 1查看 365关注 0票数 1

我正在尝试在ASP.NET核心中实现一个控制器,它返回从SQL数据库查询的潜在的大量数据。为此,我使用buffered: false参数通过Dapper的Query()方法执行查询。这意味着必须在枚举查询结果之后释放SqlConnection对象。

似乎没有一种简单的方法来实现这一点。我通过编写一个包装IEnumerable的类来让它正常工作,reference计算它被要求创建的任何枚举数。当所有枚举器都被释放后,它就会释放数据库连接。

这似乎是可行的,但我担心在某些情况下,数据库连接不会被释放(例如,如果请求在开始枚举查询结果之前被取消)。除了写入临时文件并将其流式传输到客户端之外,还有更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-07 16:27:17

这就是我最后想出来的。连接的生存期归代替通常的ObjectResult返回的StreamedDatabaseObjectResult所有。repository类返回要处置的连接以及结果。这似乎涵盖了所有的情况,并且很好地使用了异步方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class StreamedDatabaseObjectResult : ActionResult
{
    private readonly Func<Task<DisposableEnumerable>> _getValuesFunc;

    public StreamedDatabaseObjectResult(Func<Task<DisposableEnumerable>> getValuesFunc)
    {
        _getValuesFunc = getValuesFunc;
    }

    public override async Task ExecuteResultAsync(ActionContext context)
    {
        using (var de = await _getValuesFunc())
        {
            var objectResult = new ObjectResult(de.Values);
            await objectResult.ExecuteResultAsync(context);
        }
    }
}

public class DisposableEnumerable : IDisposable
{
    public IEnumerable Values { get; }
    private readonly IDisposable _disposable;

    public DisposableEnumerable(IDisposable disposable, IEnumerable values)
    {
        Values = values;
        _disposable = disposable;
    }

    /// <inheritdoc />
    public void Dispose()
    {
        _disposable.Dispose();
    }
}

[HttpGet]
[ProducesResponseType(200)]
public ActionResult<IEnumerable<MyClass>> GetThings(CancellationToken cancellationToken)
{
    return new StreamedDatabaseObjectResult(() => _repo.GetThings(cancellationToken));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53671603

复制
相关文章
实时低延迟流式传输
本文来自BITMOVIN,由Jameson Steiner编辑,文章主要内容是“实时低延迟流式传输”。
用户1324186
2020/07/07
2.4K0
IEnumerable<T>和IQueryable<T>区分
LINQ查询方法一共提供了两种扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展;Queryable类,针对继承了IQueryable<T>接口的集合进行扩展。我们会发现接口IQueryable<T>实际也是继承了IEnumerable<T>接口的,既然这样微软为什么要设计出两套扩展方法呢?
CherishTheYouth
2019/09/11
9240
IEnumerable<T>和IQueryable<T>区分
如何在Mule 4 Beta中实现自动流式传输
原文地址:https://dzone.com/articles/how-automatic-streaming-in-mule-4-beta-works
Steve Wang
2018/06/07
2.2K0
教程:使用 Superfluid 流式传输令牌
Superfluid 是一种可组合的 DeFi 原语,它允许您将令牌从一个地址逐秒传输到另一个地址。一些用例包括但不限于:
公众号---人生代码
2021/08/26
1.1K0
教程:使用 Superfluid 流式传输令牌
(转载)IQueryable和IEnumerable
第一篇:https://www.cnblogs.com/zgqys1980/p/4047315.html;
CherishTheYouth
2019/09/11
5440
(转载)IQueryable和IEnumerable
【分段传输】c#使用IAsyncEnumerable实现流式分段传输
    在使用SSE的时候,前端可以实现流式传输,但是有个问题就是这是一个独占的连接,相当于如果你不手动关闭连接,就会一直请求,一直连接调用接口,而且发送的数据格式也是按照定义好的协议来,而使用c#自带的IAsyncEnumerable也可以实现流式传输,不过返回的数据是在之前返回的基础上进行累加,需要自己做处理,我的例子是使用的是ajax来实现,群友有提供了fetch的实现代码,接下来我们看看c#IAsyncEnumerable实现传输的ajax方案和fetch的代码吧。
陈显达
2023/10/23
4180
【分段传输】c#使用IAsyncEnumerable实现流式分段传输
串行传输中的同步传输和异步传输
在物理层的传输方式中,分为并行传输和串行传输。在串行传输里,又分为同步传输和异步传输。
小末快跑
2019/07/03
3.3K0
IEnumerable和IEnumerator的关系
using System; using System.Collections; public class Person { public Person(string fName, string lName) { this.firstName = fName; this.lastName = lName; } public string firstName; public string lastName; } public clas
小端
2018/04/16
9140
在流式模型和分布式模型中实现最优矩估计
摘要:数据流模型中最古老的问题之一是近似第p个矩∥X∥pp=Σni= 1 | Xi | pof基础向量X∈Rn,它表示为poly(n)更新的序列。坐标。特别感兴趣的是当p∈(0,2)。虽然当允许正和负更新时,已知这个问题的紧密空间界限(ε-2logn)位,但令人惊讶的是,当所有空间复杂性都存在差距时更新是正的。具体来说,上限是O(ε-2logn)位,而下限只是Ω(ε-2 + logn)位。最近,假设得到了O~(ε-2 + logn)位的上界。更新以随机顺序到达。
罗大琦
2019/07/18
6190
在 Asp.Net Core 中什么是认证和授权
认证(Authentication) 和 授权(Authorization)在 Asp.Net core 充当了两个不同的职责。有的老伙计在理解的时候还存在误解。本文我们将会通过一些简单的例子来说明这两个概念。
newbe36524
2023/02/08
1.4K0
在 Asp.Net Core 中什么是认证和授权
在 Asp.Net Core 中什么是认证和授权
认证(Authentication) 和 授权(Authorization)在 Asp.Net core 充当了两个不同的职责。有的老伙计在理解的时候还存在误解。本文我们将会通过一些简单的例子来说明这两个概念。
newbe36524
2023/08/23
2270
MVC架构在Asp.net中的应用和实现
摘要:本文主要论述了MVC架构的原理、优缺点以及MVC所能为Web应用带来的好处。并以“成都市信息化资产管理系统”框架设计为例,详细介绍其在Asp.net环境下的具体实现。旨在帮助Web设计开发者更好的了解和掌握MVC,合理利用MVC构建优秀的Web应用。
莫问今朝
2019/02/25
3.7K0
Windows下docker的安装,将ASP.NET Core程序部署在docker中
参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html docker for windows下载连接: https://docs.docker.com/docker-for-windows/install/ 关于配置的细节以及docker的下载安装等操作,参考文章中已经介绍的很详细
蓝夏
2018/04/28
3.2K1
Windows下docker的安装,将ASP.NET Core程序部署在docker中
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme)。接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉。通过改变主题的内容,而不用改变站点的单个页面,就可以轻易地改变站点的样式。主题也可以在开发者之间共享。
Java架构师必看
2021/03/22
3.5K0
在Mono 2.8上部署ASP.NET MVC 2
Mono 2.8发布:C#4.0和更好的性能,我们知道Mono 2.8对ASP.NET MVC 2的完全支持,下面我们就来测试下在Mono 2.8上部署ASP.NET MVC 2应用程序。我的环境是Opensuse 11.3,通过以下命令部署好Mono 2.8的开发环境,之所以说是开发环境是同时会更新MonoDevelop,支持Mono2.8的程序开发: zypper addrepo http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.3 m
张善友
2018/01/30
7200
在Mono 2.8上部署ASP.NET MVC 2
ASP.NET Core WebAPI 流式返回 逐字显示
Websocket、SSE(Server-Sent Events)和长轮询(Long Polling)都是用于网页和服务端通信的技术。
郑子铭
2023/08/29
6570
ASP.NET Core WebAPI 流式返回 逐字显示
基于HTTP流式传输的长时响应体验提升
在我们应用开发中偶尔遇到某个请求需要后端进行大量计算的情况,这种情况下,按照传统的前后端协同方式,前端需要等待后端慢慢计算,会放一个loading效果,而长时间的loading对用户的体验并不友好,而如果后端采用异步方式,在接收到前端请求后立即返回,过一段时间完成计算后再让前端请求一次,又会让界面上的数据在这段等待时间中处于老的不正确的数据情况,因此,我们需要找到一种既可以避免异步发送数据让用户误认为结果错误,又可以避免长时响应让用户等待焦虑的方法,利用流式传输,可以将结果分片返回,从而让界面实时发生变化,又可以减少前后端多次交互带来的编码困难。
否子戈
2023/09/02
3.9K0
基于HTTP流式传输的长时响应体验提升
在虚拟目录中部署 ASP.NET Core 应用
ASP.NET Core 已经发布了 2.0 RC1 (Go Live) 版本, API 已经不在变化, 但是很多人期待的已久的在虚拟目录中部署的功能还是没有出现, 看来只能自己想办法解决这个问题了。
beginor
2020/08/07
1.7K0
ASP.NET SignalR 2.0入门指南介绍SignalRSignalR和WebSocket传输和回滚HTML5 传输协议Comet transports传输协议选择过程监测传输指定传输协议连接
介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程。实时Web功能使服务端代码推送内容到链接可客服端并立即应用成为可能,而不需要服务端等待客户端去请求数据。 SignalR可用于任何你想添加实时Web功能到ASP.NET应用程序的情形,聊天室是一个常用的例子,用户可以刷新Web页面来获得新的数据,或者页面使用一个长轮询来取回数据,这都是SignalR可以应用的场景。比如说仪表盘和监视系统,实时游戏等。 SignalR支持
小白哥哥
2018/03/07
2K0
ASP.NET SignalR 2.0入门指南介绍SignalRSignalR和WebSocket传输和回滚HTML5 传输协议Comet transports传输协议选择过程监测传输指定传输协议连接
在 ASP.NET Core 中安装 MVC
到目前为止,我们在本系列视频中使用的 ASP.NET Core 项目是使用“空”项目模板生成的。目前这个项目没有设置和安装 MVC。
角落的白板报
2019/05/15
1.5K0

相似问题

在ASP.NET内核中流式传输文件后如何删除该文件

412

在Android中捕获和流式传输视频

10

已流式传输的webHttpBinding未流式传输

17

在ASP.NET中流式传输文件,C#?

35

在ASP.NET中流式传输大型文件上载

234
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文