Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpCookie.Path和映射的URL_C#_Asp.net_Cookies_Url Routing_Relative Path - Fatal编程技术网

C# HttpCookie.Path和映射的URL

C# HttpCookie.Path和映射的URL,c#,asp.net,cookies,url-routing,relative-path,C#,Asp.net,Cookies,Url Routing,Relative Path,根据官方文件页面: Path属性扩展了Domain属性,以完全描述应用cookie的特定URL。例如,在URL http:/www.microsoft.com/asp中,域是www.microsoft.com,路径是/asp 然后他们提供了一个例子:mycokie.Path=“/asp” 在我看来,前面的陈述产生的问题多于答案。 所以我的问题是,如果我像前面的例子一样设置cookie,并且有一个像/asp/{id}这样的映射路由,会发生什么?也行吗 如果我仅使用asp定义没有/的路径,也会受到影

根据官方文件页面:

Path属性扩展了Domain属性,以完全描述应用cookie的特定URL。例如,在URL http:/www.microsoft.com/asp中,域是www.microsoft.com,路径是/asp

然后他们提供了一个例子:
mycokie.Path=“/asp”

在我看来,前面的陈述产生的问题多于答案。 所以我的问题是,如果我像前面的例子一样设置cookie,并且有一个像
/asp/{id}
这样的映射路由,会发生什么?也行吗

如果我仅使用
asp
定义没有
/
的路径,也会受到影响?
还有一个问题,前一个设置的范围是什么(我的意思是我可以从哪些URL读取cookie)?

我在另一个页面上找到了答案,答案是他们用小写字母写的:

路径可以是站点根目录下的物理路径,也可以是虚拟根目录下的路径。其效果是cookie仅对Application1文件夹或虚拟根目录中的页面可用。例如,如果您的站点名为www.contoso.com,则在上一示例中创建的cookie将可用于具有路径的页面以及该文件夹下的任何页面。但是,cookie将不可用于其他应用程序中的页面,例如或仅限于

例如:

HttpCookie appCookie = new HttpCookie("AppCookie");
appCookie.Value = "written " + DateTime.Now.ToString();
appCookie.Expires = DateTime.Now.AddDays(1);
appCookie.Path = "/Application1";
Response.Cookies.Add(appCookie);
他们还谈论类似的
领域
范围:

默认情况下,cookie与特定域相关联。例如,如果您的站点是www.contoso.com,则当用户从该站点请求任何页面时,您编写的cookie将发送到服务器。(这可能不包括具有特定路径值的Cookie。)如果您的站点具有子域,例如contoso.com、sales.contoso.com和support.contoso.com,则您可以将Cookie与特定子域相关联。为此,请设置cookie的域属性,如本例所示:

以这种方式设置域时,cookie将仅对指定子域中的页面可用。您还可以使用Domain属性创建可在多个子域之间共享的cookie,如以下示例所示:


我已经用下面的代码更改了cookie路径。希望它也能对你有用

System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId") { Path = "/Application", Value = newID });
//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";
System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId") { Path = "/Application", Value = newID });