3

test1.aspxとtest2.aspxの2つのページがあります

test1.aspxにはこれがあります

protected void Page_Load(object sender, EventArgs e)
{
  HttpCookie cookie = new HttpCookie("test", "test");
  cookie.Expires = DateTime.Now.AddDays(1);
  Response.SetCookie(cookie);
}

test2.aspxにはこれがあります

protected void Page_Load(object sender, EventArgs e)
{
  Response.Write(Response.Cookies["test"].Value);
}

何度試しても、Cookieの値はnullです。ページ1、次にページ2を開こうとしましたが、Cookieが機能することを期待していましたが、機能していません。理由はわかりません。

4

5 に答える 5

8

Request応答の代わりに を読み取る必要があると思います。

MSDN の提案として

protected void Page_Load(object sender, EventArgs e) 
{
    Response.Write(Request.Cookies["test"].Value);
}

Web アプリケーションでは、要求はクライアント (ブラウザー) から送信され、応答はサーバーから送信されます。ブラウザからの Cookie または Cookie データを検証する場合は、Request.Cookiesコレクションを使用する必要があります。ブラウザに送信される Cookie を作成するときは、それらをResponse.Cookiesコレクションに追加する必要があります。

SetCookie の使用に関するその他の考慮事項

最初のページで使用されているHttpResponse.SetCookieの興味深い点。MSDN によると、このメソッドはコードで使用するためのものではありません。

この API は .NET Framework インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

このページにあるサンプル コードでさえ、このResponse.Cookies.Add(MyCookie)アプローチを使用して呼び出しを行いません。SetCookie

于 2012-07-02T04:47:00.243 に答える
2

必要なものは次のとおりです。

protected void Page_Load(object sender, EventArgs e) 
{
    Response.Write(Request.Cookies["test"].Value);
}

ここにサンプルがあります: ASP.NET および C# での Cookie の読み取りと書き込み

よろしく

于 2012-07-02T04:51:03.767 に答える
2

(応答) で Cookie を保存し、(要求) で Cookie を読み取る

//write
response.cookies("abc") = 123;

//read
if ((request.cookies("abc") != null)) {
string abc = request.cookies("abc");
}
于 2012-11-08T21:57:46.377 に答える
1

使用するResponse.Cookies.Add(cookie);

参照: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.cookies

于 2012-07-02T04:51:42.800 に答える
0

ページ test2.aspx

これを試してみてください

    protected void Page_Load(object sender, EventArgs e)
    {
        var httpCookie = Request.Cookies["test"];
        if (httpCookie != null) 
        {
            Response.Write(httpCookie.Value);
        }
    }
于 2012-07-02T05:13:42.320 に答える