Nancyfx Request.Session没有持有AJAX帖子的值

时间:2013-11-15 10:37:05

标签: c# session nancy

我对南希很新,所以希望我在这里做些傻事。我有一个nancy服务,我发布的数据是这样的:

$.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页面,会话项在服务器上再次为空。

我已经排除了跨站点发布,因为它们都在同一个域中。

这可能是一个AJAX的东西吗?似乎不太可能,因为这似乎是一个非常标准的事情。 或者你不能在POST上设置它? 如果是这样的话有办法吗?

如果有人可以提供帮助,我将永远感激,否则我将不得不重新回到WCF中写这个,这会让我从窗口投掷自己:)

非常感谢。

修改

  • 在Chome打开一个新的隐身窗口我点击主页,没有nancy cookie 礼物(这是正确的)
  • 输入一个回调过来的搜索词和AJAX帖子并抓取JSON,同时在Nancy Session中弹出一个字符串列表
  • 检查cookie,nancy one出现如此,会话值在回发后是正确的:

      npTBnqPp99nLd5fU0%2btJbq%2fY%2bdf2UFWTaq5D28Az7Jw%3dzF8cIHNxTWX399sbmowjheho2S29ocpKs1TXD51BrbyPPNCeLfAcYqWhkRHqWdwKJNED5kuspllIjhI5rf2W6NKtf8xo68BlF5eLLgJxMtAxw2yD2ednEzUazq1XBt2Id77t5LE5tZVwkpRGDT5b9J0nQnr9zfzCOALXb2hQQGBPkMVyNNTO24pW1UC6Uda3B86LLYA02Jgy4G9DiT6KsutR3pSXO8AZFOlcmAEHbSSX9A8FAHaL ... etc.
    
    • 然后我搜索一个不同的搜索词,调用这段代码: --Session.DeleteAll();
    • nancy会话重新填充新数据并返回浏览器

但是,此时尚未使用新值更新cookie,如下所示:

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

我还需要做些什么来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

所以我的问题是我真的有些愚蠢,cookie的实现工作得很好,但是有时我会在cookie中填充过多并将其推到4K cookie限制之上。

这意味着我看到了一些不一致的行为,有时候cookie工作得很好(cookie是&lt; 4K),对于某些搜索术语来说,过多的cookie被写入cookie,这意味着cookie从未被创建过或者它没有覆盖现有的cookie。

所以,是的,我的错,但是认为这个答案可能会帮助某些人,因为我试图将这个世界存放在一个饼干中而感到愚蠢。

我正准备写会话提供商。