在Web Garden Mode中,如何为除Opera之外的所有主要浏览器维护进程ID?

时间:2013-03-29 20:14:53

标签: c# asp.net browser web-garden

我在 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。

1 个答案:

答案 0 :(得分:1)

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

我前段时间做了相同的测试,我从未面对过这个问题。我不知道确切的机制,关于asp.net如何选择哪个进程将获得下一个请求,但不是坚持浏览器。

更多

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

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

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