我的任务是确定如何通过 cookie 跨多个应用程序池从一个子域到另一个子域来维护用户会话。到目前为止,我的发现表明子域可以跨池共享 cookie,但我需要能够实时演示这一点。
我以前从未使用过应用程序池,我只想让我的简单 cookie 烘焙/读取 Web 应用程序的一个实例在 localhost:3000 的池 A 上运行,并在 localhost:3001 的池 B 上运行另一个实例。我找到的许多答案只是说“创建应用程序池并添加您的应用程序,但我很难找到有关如何具体执行此操作的详细信息。
我正在运行的网络应用程序是来自 HttpCookieCollection 的示例。
您可以按照以下步骤操作:
打开iis管理器
使用以下配置创建 2 个网站:
根据您的测试 .ip 地址设置文件夹路径站点名称和 IP 地址,您可以从下拉列表中选择,然后选择文件夹路径作为您的网站发布文件夹。
重复相同的步骤并创建第二个网站。
添加如下所示的条目,而不是使用您的机器IP 127.0.0.1
要共享 cookie,您可以使用以下代码:
protected void SetCookieButton_Click(object sender, EventArgs e)
{
// Create and set cookie
HttpCookie cookie = new HttpCookie("MySharedCookie", "Hello from AppA");
cookie.Domain = ".domain.com"; // Sharing across subdomains
cookie.Path = "/";
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
// Refresh page to show the cookie value
Response.Redirect(Request.Url.AbsoluteUri);
}
或者在 web.config 文件中使用此代码:
<system.web>
<httpCookies domain=".domain.com" />
</system.web>
测试结果: