0

私のサイトでは、管理者アカウントにログインしたら「記憶」し、ログアウトしました(ログアウトするとCookieが削除されます)。別のアカウントで入力して「記憶」をチェックすると、次のエラーが表示されます:

Unable to cast object of type 'System.Web.HttpCookie' to type 'System.String'.

私のセッションで何か奇妙なことを入力したと思いますが、その理由はわかりません..

私がすでに試したこと:私はすでにすべてを試しましたが、なぜうまくいかないのかわかりません。

誰でも修正方法を知っていますか?ありがとう。

ここにコード:

protected void Page_Load(object sender, EventArgs e)
    {

        if (Request.Cookies["account"] != null)
        {
            Session["user2"] = Request.Cookies["userFont"];
            Session["user"] = Request.Cookies["account"];
        }

        if (Session["user"] == null)
        {
            Session["user2"] = "Guest";
            hey = (string)Session["user2"];
            log += "You are not logged in, <a href='Login.aspx'><font color='red'>Log in!</font></a> or <a href='Register.aspx'><font color='red'>Register!</font></a> ";
            button += "<td><a href='Login.aspx' class='button'>Log in</a></td>";
        }
        else
        {
            hi = (string)Session["user"];
          hey = "<a href='\\Profile.aspx?user="+hi+"'>" + Session["user2"] + "</a>";
            button += "<td><a href='Login.aspx' class='button'>Log out</a></td>";
        }

私はエラーが発生しています:

hi = (string)Session["user"];
4

1 に答える 1

1

これSession["user"] = Request.Cookies["account"];は、文字列ではなく Cookie を設定します。((HttpCookie)Session["user"]).Value;Cookie から文字列を取得するために使用します。

http://msdn.microsoft.com/en-us/library/system.web.httpcookie.aspx

于 2013-06-24T16:48:37.087 に答える