我对南希很新,所以希望我在这里做些傻事。我有一个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中写这个,这会让我从窗口投掷自己:)
非常感谢。
修改
检查cookie,nancy one出现如此,会话值在回发后是正确的:
npTBnqPp99nLd5fU0%2btJbq%2fY%2bdf2UFWTaq5D28Az7Jw%3dzF8cIHNxTWX399sbmowjheho2S29ocpKs1TXD51BrbyPPNCeLfAcYqWhkRHqWdwKJNED5kuspllIjhI5rf2W6NKtf8xo68BlF5eLLgJxMtAxw2yD2ednEzUazq1XBt2Id77t5LE5tZVwkpRGDT5b9J0nQnr9zfzCOALXb2hQQGBPkMVyNNTO24pW1UC6Uda3B86LLYA02Jgy4G9DiT6KsutR3pSXO8AZFOlcmAEHbSSX9A8FAHaL ... etc.
但是,此时尚未使用新值更新cookie,如下所示:
npTBnqPp99nLd5fU0%2btJbq%2fY%2bdf2UFWTaq5D28Az7Jw%3dzF8cIHNxTWX399sbmowjheho2S29ocpKs1TXD51BrbyPPNCeLfAcYqWhkRHqWdwKJNED5kuspllIjhI5rf2W6NKtf8xo68BlF5eLLgJxMtAxw2yD2ednEzUazq1XBt2Id77t5LE5tZVwkpRGDT5b9J0nQnr9zfzCOALXb2hQQGBPkMVyNNTO24pW1UC6Uda3B86LLYA02Jgy4G9DiT6KsutR3pSXO8AZFOlcmAEHbSSX9A8FAHaL.... etc.
我还需要做些什么来解决这个问题吗?
答案 0 :(得分:0)
所以我的问题是我真的有些愚蠢,cookie的实现工作得很好,但是有时我会在cookie中填充过多并将其推到4K cookie限制之上。
这意味着我看到了一些不一致的行为,有时候cookie工作得很好(cookie是&lt; 4K),对于某些搜索术语来说,过多的cookie被写入cookie,这意味着cookie从未被创建过或者它没有覆盖现有的cookie。
所以,是的,我的错,但是认为这个答案可能会帮助某些人,因为我试图将这个世界存放在一个饼干中而感到愚蠢。
我正准备写会话提供商。