7

我有一个带有私有/受保护方法或私有/受保护变量的 Web 应用程序

首先,我想知道 Web 服务器何时已经为某个 Web 应用程序建立了连接,然后接收到一个新连接,它是否为这个新连接运行 Web 应用程序的新实例,从而重新初始化中的所有变量那个网络应用程序就像在电脑上一样?

我已经上网了,我非常困惑!

其次,我正在使用 Visual Studio 开发服务器,我了解到它不接受来自其他计算机的连接,我通过使用端口转发软件解决了这个问题。所以问题是,通过这样做,VS2010 Web 服务器是否将每个不同的请求视为新请求或相同请求,因为我是从本地计算机上的应用程序转发它们?

最后,如果我在一个浏览器上打开了一个 Web 应用程序,然后决定在另一个浏览器上打开它并保持当前浏览器打开,这会被视为新请求还是回发?

4

4 回答 4

7

应用程序域是常量(可以回收)并且仅在第一个请求时创建(也可以在此之前设置)。

也就是说,所有的静态变量都只初始化一次,但是你的请求所依赖的所有非静态类在每次请求时都被初始化。

所以基本上你在普通 asp.net 中的所有页面和 asp.net MVC 中的所有控制器都会在每次请求时初始化。

在此处阅读更多信息http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-Cycle

在此处输入图像描述

*注意 - 图片取自上述文章

于 2013-06-16T10:50:31.770 回答
1

它比那复杂一点。该过程针对多连接进行了优化并且是无状态的,但是可以使用兑现来提高可扩展性:不需要重新处理的可以简单地重复使用:http: //www.dotnetfunda.com/articles/article821-beginners-guide -how-iis-process-aspnet-request.aspx是开始了解可能发生的事情的好地方http://msdn.microsoft.com/en-us/library/bb470252%28v=vs.100%29.aspx是一个有点干燥的 ms 版本“iis asp 页面生命周期”是一个很好的 google

于 2013-06-16T10:55:20.680 回答
1

Web 应用程序实例处理许多请求。并且共享状态(缓存等)在这些请求中非常有效地使用,无论是单个会话还是多个并发会话。

发出请求时,会为该请求创建请求对象(以及任何“页面”/“控制器”对象)。这个对象的状态是新鲜的,但是像“会话状态”、“视图状态”、cookies和请求值这样的系统可以用来重新填充它——有时很大程度上是自动化的。

单个用户提出单独的请求不是回发。它们是单独的会话,但即使是打开同一页面两次(标签等)的单个会话也不是回发。它主要依靠http动词和其他证据来确定一个回发。

于 2013-06-16T11:29:55.393 回答
0

您必须阅读这篇很棒的文章:https ://lowleveldesign.org/2011/07/20/global-asax-in-asp-net/来回答您的问题。虽然有点晚了,但它可能会帮助其他人。

于 2019-10-11T06:38:32.223 回答