2

我在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中的按钮时,我都会得到不同的数字(取决于 Worker 进程数),这是正常的。但是在Chrome中,我总是得到相同的进程 ID。

4

1 回答 1

1

你在这里做错了,网络花园上的浏览器进程没有粘性。

我前段时间做过同样的测试,但我从来没有遇到过这个问题。我不知道确切的机制,关于 asp.net 是如何选择哪个进程将获得下一个请求,但不是坚持在浏览器上。

多一点

网络花园是当您在同一台计算机/服务器/池上使用多个进程来处理每个客户端请求时。

Process.GetCurrentProcess().Id显示实际运行您询问的页面的过程。我不确定asp.net如何选择将选择哪个进程来运行下一个请求,可能与每个进程的可用性以及每个进程的线程运行有关。

如何与客户端和调用浏览器数据无关。因此,如果您获得相同或不同的 id,则与服务器的负载有关,可能与客户端上的页面缓存有关,但肯定与浏览器无关。

于 2013-03-29T21:41:22.157 回答