IIS 7、应用程序和 cookie 为您解决了一个新的、可能未解决且易于重现的问题。要点是,如果您从一个文件夹设置 cookie,然后从另一个文件夹请求它,显然在同一网站上,如果两个文件夹之一已从 IIS 7 设置为“转换为应用程序”,则不会从 IIS7 发送 cookie .
重现问题的步骤:
1)使用以下代码创建“setcookie.asp”(CLASSIC ASP):
response.cookies("mycookie")="myvalue"
response.cookies("mycookie").expires=dateadd("d",3650,now())
2)使用以下代码创建一个“readcookie.aspx”:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie myCookie = Request.Cookies["mycookie"];
if (myCookie!=null)
response.write(myCookie.Value);
else
response.write("NULL COOKIE");
}
3) 创建一个带有两个子文件夹的新 IIS 7 网站:“folderone”和“foldertwo”。
4) 在根目录下,放入“writecookie.asp”,然后将“readcookie.aspx”复制到“folderone”和“foldertwo”。
5)去http://yourwebsite/setcookie.asp
你设置cookie - 好的 - 然后去http://yourwebsite/folderone/readcookie.aspx
:它工作并显示cookie内容。这也适用于http://yourwebsite/foldertwo/readcookie.aspx
现在,乐趣:
在 IIS 7 上右键单击“foldertwo”并选择“转换为应用程序”,然后再试第 5 步):“folderone/readcookie.aspx”将返回正确的 cookie,但“foldertwo/readcookie.aspx”将返回“NULL” “!!!!!!
如果您在 IIS6 上执行相同操作,则 cookie 可以在不同的应用程序中完美运行。
有什么解决办法吗?似乎这与在应用程序之间共享“app_code”完全相同的问题(这是不可能的:您需要在您设置的每个应用程序文件夹下复制+粘贴“app_code”文件夹)。
谢谢任何人。