9

私は今日このサイトに参加しました。誰かがASP.NETのCookieで何が間違っているのかを説明してくれることを願っています。私の質問があまりにも基本的であるならば、私はまだとてもアポリジーを学んでいます、しかし私はグーグルで答えを見つけることができません。私が見つけたすべての答えは、私がすでに持っているコードを示しています。

私はCookieの作成と読み取りを実験しており、このコードをアプリケーションコンストラクターに配置しました。これは私が私のクッキーを初期化してブラウザに追加しようとする方法です。

global.asax.cs

    public MyApplication()
    {
        myCookie = new HttpCookie("UserSettings");
        myCookie.Value = "nl";
        myCookie.Expires = DateTime.Now.AddDays(1d);
        Response.Cookies.Add(myCookie);
    }

HomeController.csのメソッド(Cookieを読み取ろうとしています)

    public void setLang(string lang)
    {
        HttpCookie myCookie = Request.Cookies["UserSettings"];
        myCookie.Value = lang;
        //rest of method

Response.Cookies.Add(myCookie);でエラーが発生します。[HttpException(0x80004005):このコンテキストでは応答を利用できません。]

名前空間などをインポートするのを忘れたかもしれないと思っていますが、このエラーを修正するために何もしていないようです。誰かが私を正しい方向に向けることができますか?

4

4 に答える 4

21

アプリケーションが HTTP 要求の処理を開始する前に Global.asax コンストラクターが呼び出されるため、Global.asax コンストラクターを使用して Cookie を Response に追加することはできません。

コードを Global.asax コンストラクターからApplication_BeginRequestメソッドに移動します。

public void Application_BeginRequest()
{
    myCookie = new HttpCookie("UserSettings");
    myCookie.Value = "nl";
    myCookie.Expires = DateTime.Now.AddDays(1d);
    Response.Cookies.Add(myCookie);
}

Global.asax には、発生するさまざまなイベントがいくつかあります。選択を誤っただけです。

  • Application_Init: アプリケーションが初めて初期化されるときに発生します。
  • Application_Start: アプリケーションの初回起動時に起動します。
  • Session_Start: ユーザーのセッションが初めて開始されたときに発生します。
  • Application_BeginRequest: 新しいリクエストが来るたびに発火します。
  • Application_EndRequest: リクエストが終了したときに発火します。
  • Application_AuthenticateRequest: リクエストを認証する準備ができていることを示します。
  • Application_Error: アプリケーション内で未処理のエラーが発生したときに発生します。
  • Session_End: 1 人のユーザー セッションが終了またはタイムアウトするたびに発生します。
  • Application_End: アプリケーションが終了またはタイムアウトしたときに発生します (通常、アプリケーションのクリーンアップ ロジックに使用されます)。

( http://en.wikipedia.org/wiki/Global.asaxより)

于 2012-06-13T08:39:36.050 に答える
0

Cookie の共通プロパティ:

1.Domain => Which is used to associate cookies to domain.

2.Secure  => We can enable secure cookie to set true(HTTPs).

3.Value    => We can manipulate individual cookie.

4.Values  => We can manipulate cookies with key/value pair.

5.Expires => Which is used to set expire date for the cookies. 

クッキーの利点:

1.Its clear text so user can able to read it.

2.We can store user preference information on the client machine.

3.Its easy way to maintain.

4.Fast accessing.

クッキーのデメリット

1.If user clear cookie information we can't get it back.

2.No security.

3.Each request will have cookie information with page. 

クッキー情報をクリアするには?

1.クライアントマシンのCookieフォルダからCookie情報を消去できます

2. Cookie オブジェクトに有効期限を設定する userInfo.Expires = DateTime.Now.AddHours(1); 1時間でCookieをクリアします

于 2017-01-31T10:32:29.080 に答える