簡體   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