C# 使用Javascript创建的Cookie在C代码中不可访问……有任何原因或其他选项吗?

C# 使用Javascript创建的Cookie在C代码中不可访问……有任何原因或其他选项吗?,c#,javascript,asp.net,.net,c#-4.0,C#,Javascript,Asp.net,.net,C# 4.0,我正在处理cookie,我碰巧使用JavaScript创建了它,但是当我在我的过程完成后尝试使用C#代码隐藏文件使cookie过期时,我无法找到指定的cookie 这可能是什么原因??我认为用JavaScript创建的cookie不能使用C#。。。?这是真的吗 下面是我在JS中创建cookie的代码 var expiryDate = new Date(); expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 3

我正在处理cookie,我碰巧使用JavaScript创建了它,但是当我在我的过程完成后尝试使用C#代码隐藏文件使cookie过期时,我无法找到指定的cookie

这可能是什么原因??我认为用JavaScript创建的cookie不能使用C#。。。?这是真的吗

下面是我在JS中创建cookie的代码

var expiryDate = new Date();
expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 365 days
document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";";
这是我查找和终止cookie的C#代码

public void DeleteCookie(string Name) 
{
    if (System.Web.HttpContext.Current.Request.Cookies["ReferedCookie"] != null)
    {
        HttpCookie myCookie = new HttpCookie(Name);
        myCookie.Expires = DateTime.Now.AddDays(-5d);
        System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
    }        
}

提前感谢。

最好使用此功能,以最大限度地减少出错的机会:

DeleteCookie("ReferedCookie");


public void DeleteCookie(string Name) 
{
    if (System.Web.HttpContext.Current.Request.Cookies[Name] != null)
    {
        HttpCookie myCookie = new HttpCookie(Name);
        myCookie.Expires = DateTime.Now.AddDays(-5d);
        System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
    }        
}
function set_cookie(name, value, expires, path, domain, secure)
{
  var cookie_string = name + "=" + escape ( value );

  if(expires)
  {
    cookie_string += "; expires=" + expires.toGMTString();
  }

  if(path)
        cookie_string += "; path=" + escape ( path );

  if(domain)
        cookie_string += "; domain=" + escape ( domain );

  if(secure)
        cookie_string += "; secure";

  document.cookie = cookie_string;
}
在你的情况下,你可以这样称呼它:

var value = "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token;
var expiryDate = new Date();
expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 365 days

set_cookie("ReferedCookie", value, expiryDate);

cookie的
Path
属性可能存在问题

使用Javascript设置cookie时,cookie的默认路径将基于设置cookie的页面的位置

为了使cookie过期,必须指定相同的路径。因此,如果您有一个页面:

http://test.foo.com/somepath/default.asxp
使用问题中的javascript代码在此页面上设置cookie,cookie的默认路径为:

/somepath/
这意味着浏览器将向该路径下的所有页面发送此cookie。它将不会发送到该路径之外的页面

要使此cookie从服务器过期,您需要指定cookie的路径:

HttpCookie myCookie = new HttpCookie(Name);   
myCookie.Expires = DateTime.Now.AddDays(-5d);   
myCookie.Path = "/somepath/";   
System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);   
或者,您必须在最初将cookie设置为(例如)
/
时指定路径:

document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";path=/";

然后在相同的路径上过期。

创建后,你能访问JS中的cookie吗?亲爱的朋友……这里你正在使JS文件中的cookie过期,我不需要这样做,我需要使用C代码使其过期,cookie正在使用你提供的代码非常好地创建……请找出我的C代码不起作用的原因,甚至cookie都是在客户端生成的,我可以使用WebDeveloper工具栏查看,您可以查看cookie使用的路径和域吗?并将其与aspx页面的路径和域进行比较。域必须等于或是子域,路径必须等于或是该路径的子路径。这是必需的,否则浏览器将不会将cookie发送到服务器。@user1429080 Im有类似问题,需要能够从两个路径访问cookie,例如:“root/path1”和“root/path2”。这可能吗?如果是,怎么做?谢谢。@phill healey:是的,这是可能的。最简单的方法是在最初设置cookie时指定路径“/”。或者(使用您的示例)“/root/”@user1429080谢谢您的回复。我使用root作为网站的字面意思。经过多次修改,我发现访问cookie的唯一方法是将路径设置为空(例如,甚至不用斜杠)。