0

開始するために Cookie が必要な aspx ページがあります。そのページにリダイレクトする前に、Cookie を作成し、応答でそれを指定してからページにリダイレクトします。

Form form = new Form { 
            FormID = dalObject.FormID, 
            PageName = dalObject.PageName, 
            ViewPageName = dalObject.ViewPageName };

        HttpCookie cookie = new HttpCookie("FormCookie");
        cookie.Expires = DateTime.Now.AddMinutes(1);

        if (dalObject.FormID==(int)Forms.SP_APP_FORM)
        {
            cookie.Values.Add("ApplicationRepositoryID",GetEncryptedToken(applicationRepositoryID.ToString()));
            cookie.Values.Add("UserDirectoryID", GetEncryptedToken(userDirectoryID.ToString()));
            cookie.Values.Add("FormID", GetEncryptedToken(dalObject.FormID.ToString()));

            if (applicationFormID.HasValue)
                cookie.Values.Add("ApplicationFormID", GetEncryptedToken(applicationFormID.ToString()));
        }
        form.PageCookie = cookie;
        return form;

問題は、開発環境では問題なく動作し、本番環境でも (彼らにとっては) 動作しますが、本番サイトを試しても (開発用コンピューターから) 動作しないことです。Cookie が作成されていないと思われます。そして、これは開発中の 3 台のコンピューターのうち 2 台で発生します。そのうちの1つで機能しています。Cookie の削除、キャッシュのクリアを試みましたが、結果はありませんでした。

何か案は?ありがとう

4

1 に答える 1

0

これは以前に私たちのサイトで見たことがあります。私たちの場合、クライアントとサーバーのクロックは互いに大幅に同期していませんでした。サーバーは有効期限を設定し、クライアントはそれを独自のクロックに対してチェックし、(あなたの場合) 1 分以上速すぎる場合は、すぐに有効期限が切れます。

Cookie の有効期限をかなり先 (たとえば 1 週間または 1 か月) に設定し、サーバーでのみチェックを行います (サーバー自体をチェックする必要があるため)。基本的に、サーバーがチェックを行うために使用できる追加データ (手動の有効期限) を Cookie に追加しました。有効期限が切れた場合 (設定した 1 分)、サーバーは送信された Cookie を削除 (および無視) します。

これが問題の最善の解決策かどうかはわかりませんが、うまくいきました。

ちなみに、問題が見つかったのは IE のみです。

于 2012-08-06T12:56:26.233 に答える