gpt4 book ai didi

asp.net - Application_EndRequest 在请求结束之前触发?

转载 作者:行者123 更新时间:2023-12-04 23:59:09 25 4
gpt4 key购买 nike

我有一些简单的类需要在请求结束时进行处理。

为此,我调用 Dispose来自 Application_EndRequest 的对象的方法Global.asax 中的事件.

这“在我的机器上运行良好”但在我得到 Cannot access a disposed object. 的生产服务器上导致了一些问题这发生在一些 MVC 助手中。

在我看来,Application_EndRequest 是在请求​​结束时触发的。不是这样吗?我应该使用另一个事件来处理我的对象吗?

最佳答案

应用程序池问题 - 可能
我怀疑您的一次性对象不一定是请求,而是应用程序范围(它可能会根据请求实例化,但它可能正在使用一些共享资源)。只要您在开发环境中测试您的应用程序,它的行为似乎与预期一致,但一旦您将其投入生产,您就会遇到问题。 这表明您的应用程序池可能有问题 .
IIS Web 应用程序池功能实际上实例化了几个 HttpApplication您的应用程序的实例,它们可能都共享公共(public)的一次性资源。如果您的一次性对象就是这种情况并且您正在共享它,那么它可能不是线程安全的。当您不将共享资源使用情况包装在线程安全操作中时,情况也是如此。
这就是为什么当一个请求正在进行时另一个请求开始并且第一个处理对象而第二个进程仍在使用它的原因。
更多信息总是有帮助的
如果您能解释一次性对象/资源的性质以及您如何在应用程序中使用它,我们可以为您提供更好的帮助。但与此同时,您可以 read my blog post 讨论应用程序池和处理它们。这与一次性元素本身无关,但您可能仍然会发现所有信息都非常有用和有帮助。

关于asp.net - Application_EndRequest 在请求结束之前触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12797487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com