2

私はナンシーにまったく慣れていないので、ここでばかげたことをしているだけだと思います. 私はデータを投稿しているナンシーサービスを持っています:

$.ajax({
    type: 'POST',
    url: url,
    data: JSON.stringify({
        searchTerm: productSearchTerm,
        pageSize: pageView.PageSize(),
        selectedBrands: pageView.checkedBrands(),
        pageNumber: pageView.CurrentPage(),
        selectedCategories: pageView.checkedCategories(),
        selectedGender: pageView.checkedGender(),
        SelectedColours: pageView.checkedColour(),
        saleItemsOnly: pageView.saleItemsOnly(),
        selectedMinimumPrice: pageView.minPrice(),
        selectedMaximumPrice: pageView.maxPrice()
    }),
    contentType: "application/json; charset=utf-8",
    dataType: 'json'
})
    .done(function (data) {
        bindSearchResult(data);
    })
    .fail(function (a) {
        console.log(a);

    });

次に、サービスでは、ユーザーからの将来のリクエストに備えて一連の文字列値を保持する必要があります。これは次のように行っています。

    private void AddListOfStringToIsSessionNull(string name, IEnumerable<string> data)
    {
        if (Session[name] == null)
        {
            Session[name] = data.ToList();
        }
    }

これらはセッション変数を設定しているようで、戻った後にページを調べると「_nc」Cookie が存在します。

ただし、ページを F5 キーで押すと、セッション アイテムはすべてサーバーで再び null になります。

すべて同じドメイン上にあるため、クロスサイト投稿は除外しました。

これはAJAXのことでしょうか?これは非常に標準的なことのように思われるため、ありそうにありません。または、POSTに設定できませんか?もしそうなら、これを回避する方法はありますか?

誰かが助けてくれたら、私は永遠に感謝します。そうでなければ、これをWCFで書くことに戻らなければならず、窓から身を投げ出すことになります:)

どうもありがとう。

編集

  • Chome で新しいシークレット ウィンドウを開きます ホームページにアクセスしましたが、ナンシー Cookie は存在しません (これは正しいです)
  • コールバックする検索語を入力し、AJAX が投稿して JSON を取得し、ナンシー セッションで文字列のリストをポップします。
  • Cookie を確認してください。ナンシーな Cookie がそのように表示され、セッション値はポストバックで正しいです。

      npTBnqPp99nLd5fU0%2btJbq%2fY%2bdf2UFWTaq5D28Az7Jw%3dzF8cIHNxTWX399sbmowjheho2S29ocpKs1TXD51BrbyPPNCeLfAcYqWhkRHqWdwKJNED5kuspllIjhI5rf2W6NKtf8xo68BlF5eLLgJxMtAxw2yD2ednEzUazq1XBt2Id77t5LE5tZVwkpRGDT5b9J0nQnr9zfzCOALXb2hQQGBPkMVyNNTO24pW1UC6Uda3B86LLYA02Jgy4G9DiT6KsutR3pSXO8AZFOlcmAEHbSSX9A8FAHaL ... etc.
    
    • 次に、このコードを呼び出す別の検索用語を検索します。 --Session.DeleteAll();
    • nancy セッションに新しいデータが再入力され、ブラウザに戻ります

ただし、この時点では Cookie は新しい値で更新されておらず、以下のようになっています。

    npTBnqPp99nLd5fU0%2btJbq%2fY%2bdf2UFWTaq5D28Az7Jw%3dzF8cIHNxTWX399sbmowjheho2S29ocpKs1TXD51BrbyPPNCeLfAcYqWhkRHqWdwKJNED5kuspllIjhI5rf2W6NKtf8xo68BlF5eLLgJxMtAxw2yD2ednEzUazq1XBt2Id77t5LE5tZVwkpRGDT5b9J0nQnr9zfzCOALXb2hQQGBPkMVyNNTO24pW1UC6Uda3B86LLYA02Jgy4G9DiT6KsutR3pSXO8AZFOlcmAEHbSSX9A8FAHaL.... etc.

これを解決するために他に何かする必要がありますか?

4

1 に答える 1

0

したがって、私の問題は、私が本当に少しばかげていることでした。Cookie の実装はうまく機能しますが、Cookie に詰め込みすぎて 4K Cookie の制限を超える場合がありました。

これは、Cookie が適切に機能する (Cookie が 4K 未満である) という一貫性のない動作が見られることを意味し、一部の検索用語については、Cookie に書き込まれているものが多すぎて、Cookie が作成されなかったか、Cookie が上書きされなかったことを意味していました。既存のクッキー。

はい、私のせいですが、この答えは、世界をクッキーに保存しようとしている私のような愚かな人を助けるかもしれないと思いました..

それでは、セッション プロバイダーを作成します。

于 2013-11-19T15:40:31.797 に答える