繁体   English   中英

IIS 7,文件夹转换为应用程序和cookie无法正常工作

[英]IIS 7, folders converted to application and cookies not working

IIS 7,应用程序和cookie可能为您解决了一个新的,可能尚未解决且易于重新创建的问题。 要点是,如果您从一个文件夹设置cookie,然后从同一网站上的另一个文件夹请求cookie,则显然不是从IIS7发送cookie,如果两个文件夹之一已从IIS 7设置为“转换为应用程序” 。

重现此问题的步骤:

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”,然后在“ folderone”和“ foldertwo”上复制“ readcookie.aspx”。

5)转到http://yourwebsite/setcookie.asp ,然后设置http://yourwebsite/setcookie.asp确定-然后转到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”文件夹)。

谢谢任何人。

据我所知,cookie是依赖于应用程序的,即该特定站点存在cookie生命周期。

现在,当您将文件夹转换为应用程序时,它是一个新的应用程序和一个新的网站,因此不会将其视为同一网站,这就是为什么您无法为同一网站找到值。

另外,您可以通过将cookie的文本文件放在硬盘上来浏览它们。 Internet Explorer将网站的Cookie存储在一个文件名中,该文件名的格式为@ .txt,即您的帐户名。 例如,如果您的名字是mikepope,而您访问该网站www.contoso.com,则该站点的cookie将位于名为mikepope@www.contoso.txt的文件中。 (名称可能包含序列号,例如mikepope@www.contoso [1] .txt。)

由于您已将文件夹转换为自己的应用程序,因此需要设置cookie路径。

    Dim myCookie As HttpCookie
myCookie = New HttpCookie("LastVisit", DateTime.Now.ToString())
myCookie.Path += "; HttpOnly"
Response.AppendCookie(myCookie)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM