我在 Web Garden 模式下测试会话行为。
为什么所有主流浏览器只使用一个进程(在服务器上),除了 Opera ?它是如何完成的?
这是一个非常简单的Web应用程序:
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Process.GetCurrentProcess().Id);
}
标记:
<div>
<asp:Button ID="Button2" runat="server" Text="Button" />
</div>
每次我点击 Opera 中的按钮,我都会得到不同的数字(取决于工人进程数),这是正常的。但是在 Chrome 中,我总是获得相同的进程ID。
答案 0 :(得分:1)
你在这里做错了,网页上的浏览器进程没有粘性。
我前段时间做了相同的测试,我从未面对过这个问题。我不知道确切的机制,关于asp.net如何选择哪个进程将获得下一个请求,但不是坚持浏览器。
Web园是指您在同一台计算机/服务器/池上使用多个进程来处理每个客户端请求。
Process.GetCurrentProcess().Id
显示您询问的页面实际运行的进程。我不确定asp.net如何选择运行下一个请求的进程,可能与每个进程的可用性有关,并且每个进程的线程都运行。
如何与客户端和调用浏览器数据无关。因此,如果您获得相同或不同的ID,则必须考虑服务器的负载,可能是客户端上页面的缓存,但肯定不需要与浏览器有关。