Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 依赖项注入对象在服务器中存在多长时间(作用域和瞬态)_Asp.net Core_Blazor Server Side - Fatal编程技术网

Asp.net core 依赖项注入对象在服务器中存在多长时间(作用域和瞬态)

Asp.net core 依赖项注入对象在服务器中存在多长时间(作用域和瞬态),asp.net-core,blazor-server-side,Asp.net Core,Blazor Server Side,我想知道一些细节,比如服务对象保留值的时间有多长,比如服务对象是否有时间约束,特别是对于作用域和瞬态 作用域:它保留特定请求的值(想想浏览器选项卡) 瞬态:它保留特定组件的值 如果我在特定的组件(第页)中停留很长时间(不执行任何操作),在该组件中我使用了作用域和瞬态服务对象,该怎么办 价值会永远保留吗?还是会在一段时间后自动处理 如果我在使用了作用域和瞬态服务对象的特定组件(页面)中停留很长时间(不执行任何操作),该怎么办 请求从您在url(或链接或按钮)中按enter键开始,一直持续到页面加载

我想知道一些细节,比如服务对象保留值的时间有多长,比如服务对象是否有时间约束,特别是对于作用域和瞬态

作用域:它保留特定请求的值(想想浏览器选项卡)

瞬态:它保留特定
组件的值

如果我在特定的
组件
(第页)中停留很长时间(不执行任何操作),在该组件中我使用了作用域和瞬态服务对象,该怎么办

价值会永远保留吗?还是会在一段时间后自动处理

如果我在使用了作用域和瞬态服务对象的特定组件(页面)中停留很长时间(不执行任何操作),该怎么办

请求从您在url(或链接或按钮)中按enter键开始,一直持续到页面加载。之后,请求结束

HTTP是无状态的,它没有任何永久连接或状态。如果加载一个页面需要50毫秒,那么在这之后,请求结束,服务被释放。单击链接时,新请求将以实例化的新依赖项开始

每个请求都会有一个新实例,所以不要将数据“存储”到下一个请求所需的服务中。如果您只需要下一个请求的内容,请使用;如果它需要保存到下次访问之前,请使用

价值会永远保留吗?还是会在一段时间后自动处理

请求结束后,不再保存以访问服务。释放释放所有非托管资源(连接、文件句柄、非托管内存)

对象本身在内存中保留一段(未指定)时间,直到垃圾回收启动并释放对象和内存。这假设在请求结束后您没有持有对服务的任何引用,因为只有没有引用的对象才能被垃圾收集


这就是托管运行时的工作方式。垃圾收集不是确定性的,因此它可以在触发它的条件发生时的任何时候发生。

如果您的意思是“保持我的浏览器在页面上”,那么这一点都不重要。这都是关于服务器端的。请求到达并被处理,之后与请求相关的任何对象都将被解除。请注意,它们可能会在一段时间后被垃圾收集,而不是立即被垃圾收集。你需要更具体地了解生命的具体原因是什么?你说的停留时间长是什么意思?在浏览器中加载完页面后,请求即告完成。实际上,您在该页面中停留的时间并不重要。如果他们实现了
IDisposable
,那么当父容器被释放时(对于请求:在请求结束时),他们就会被释放。Disposing用于释放非托管资源。对象仍然保留,直到垃圾收集收集它为止(假设没有对它的引用;如果有引用,它将不会是GCd,而是无限期地保留,直到没有更多引用,而是处于已处置状态)。请参阅@Tseng我只想知道服务对象是否有时间限制,我引用了您在评论中提到的站点,它清楚地表示将处理该值。@ElendilZheng MSFT Ex:我在一个页面中显示一个随机数(范围对象),因此如果我导航到另一个页面并返回,该值将保持正确。值是否会在一段时间后被销毁?。当然,当我启动一个新连接时,它会被破坏。谢谢@Tseng现在我了解了如何处理服务对象。