2015-01-08 38 views
0

HttpCookie.Path官方文檔頁面:HttpCookie.Path和映射的URL

Path屬性擴展域屬性完整地描述到的cookie的應用特定的URL。例如,在URL http:/www.microsoft.com/asp中,域名爲www.microsoft.com,路徑爲/ asp。

,然後他們提供了一個例子:MyCookie.Path = "/asp";

在我看來,前面的語句創建的問題多於答案。 所以我的問題是,如果我像前面的例子一樣設置cookie,並且我有像/asp/{id}那樣的映射路線,會發生什麼?將工作嗎?

如果我在沒有/的情況下只定義asp也會影響路徑嗎? 還有一個問題,以前的設置的範圍(我的意思是從哪些URL可以讀取cookie)?

回答

4

我找到了答案另一個official page小信他們寫道:

的路徑可以是站點根或虛擬根目錄下的物理路徑。其效果是該cookie僅適用於Application1文件夾或虛擬根目錄中的頁面。例如,如果您的網站名爲www.contoso.com,則前面示例中創建的cookie將可用於路徑爲http://www.contoso.com/Application1/的頁面以及該文件夾下的任何頁面。但是,該Cookie不可用於其他應用程序的頁面,例如http://www.contoso.com/Application2/http://www.contoso.com/

例子:

HttpCookie appCookie = new HttpCookie("AppCookie"); 
appCookie.Value = "written " + DateTime.Now.ToString(); 
appCookie.Expires = DateTime.Now.AddDays(1); 
appCookie.Path = "/Application1"; 
Response.Cookies.Add(appCookie); 

他們還談類似Domain範圍:

默認情況下,Cookie與特定的域相關聯。例如,如果您的網站是www.contoso.com,則當用戶請求該網站的任何頁面時,您寫入的Cookie將發送到服務器。 (這可能不包括具有特定路徑值的Cookie。)如果您的網站具有子域名(例如,contoso.com,sales.contoso.com和support.contoso.com),則可以將Cookie與特定的子域關聯。要做到這一點,設置Cookie的Domain屬性,在這個例子中:

Response.Cookies["domain"].Value = DateTime.Now.ToString(); 
Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1); 
Response.Cookies["domain"].Domain = "support.contoso.com"; 

當域以這種方式設置,cookie將只提供給指定子網域網頁上。您還可以使用Domain屬性創建可在多個子域間共享,如下面的例子一個cookie:

//The cookie will then be available to the primary domain as well as to sales.contoso.com and support.contoso.com domains. 
Response.Cookies["domain"].Value = DateTime.Now.ToString(); 
Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1); 
Response.Cookies["domain"].Domain = "contoso.com"; 
+0

您應該將其標記爲您的答案。 – FrankO

+0

@FrankO謝謝! – CodeArtist

0

我有下面的代碼改變Cookie路徑。希望它也能爲你工作。

System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId") { Path = "/Application", Value = newID });