如何检查浏览器是否在网络应用中启用了Cookie?

Kot*_*urB 5 c# asp.net cookies firefox internet-explorer

我决定重新编写这个问题,因为我找到了一些关于如何完成上述工作的信息:http: //msdn.microsoft.com/en-us/library/aa289495%28v=vs.71%29.aspx

但是,我的问题是我正试图在Page_Load事件中做所有这些Login.aspx.cs.

最初它似乎工作正常,直到我尝试通过输入我的凭据并单击"登录"按钮实际登录.然后所有的地狱失败,我得到一个无尽的循环.它继续在Page_Loads Login.aspx.cs和之间来回传递TestForCookies.aspx.cs.每次重定向URL增长另一个"?AcceptCookies=1".有没有解决这个问题?

Login.aspx.cs代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Request.QueryString["AcceptsCookies"] == null)
        {
            Response.Cookies["TestCookie"].Value = "ok";
            Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1);
            Response.Redirect(BasePage.ResolveUrl("~/Common/TestForCookies.aspx?redirect=" + Server.UrlEncode(Request.Url.ToString())));
        }
        else
        {
            LoginBox.InstructionText = "Accept cookies = " + Request.QueryString["AcceptsCookies"];
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

TestForCookies.aspx.cs代码:

protected void Page_Load(object sender, EventArgs e)
{
    string redirect = Request.QueryString["redirect"];

    string acceptsCookies = null;
    // Was the cookie accepted?
    if (Request.Cookies["TestCookie"] == null)
    {
        // No cookie, so it must not have been accepted
        acceptsCookies = "0";
    }
    else
    {
        acceptsCookies = "1";
        // Delete test cookie
        Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1);
    }

    string url = redirect + "?AcceptsCookies=" + acceptsCookies;


    Response.Redirect(url);
}
Run Code Online (Sandbox Code Playgroud)

Kot*_*urB 0

我想我解决了。由于 URL 地址格式错误,重定向未正确完成。

登录.aspx.cs

    if (!Page.IsPostBack)
    {
        if (Request.QueryString["AcceptsCookies"] != null)
        {
            if (Request.QueryString["AcceptsCookies"].ToString() == "0")
            {
                LoginBox.InstructionText = Resources.Resource.Login10;
            }
        }
        else
        {
            Response.Cookies["TestCookie"].Value = "ok";
            Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1);

            string url = Request.Url.ToString();
            url = url.Replace("ReturnUrl", "AcceptsCookies=&ReturnUrl");

            Response.Redirect(BasePage.ResolveUrl("~/Common/TestForCookies.aspx?redirect=" + Server.UrlEncode(url)));
        }

    }
Run Code Online (Sandbox Code Playgroud)

TestForCookies.aspx.cs

    string redirect = Request.QueryString["redirect"];

    string acceptsCookies = null;
    // Was the cookie accepted?
    if (Request.Cookies["TestCookie"] == null)
    {
        // No cookie, so it must not have been accepted
        acceptsCookies = "0";
    }
    else
    {
        acceptsCookies = "1";
        // Delete test cookie
        Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1);
    }

    redirect = redirect.Replace("AcceptsCookies=", "AcceptsCookies=" + acceptsCookies);

    Response.Redirect(BasePage.ResolveUrl(redirect), true);
}
Run Code Online (Sandbox Code Playgroud)