2013-11-15 21 views
2

我對南希很陌生,希望我只是在這裏做一些愚蠢的事情。我有一個南希服務,我張貼的數據,像這樣:Nancyfx Request.Session不在AJAX上保留值

$.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 存在(這是正確的)
  • 輸入其回撥過去,AJAX後和搜索詞抓取JSON,還彈出南希會話中的字符串列表
  • 檢查cookie,南非人已經出現像這樣以及會話值在回發時正確:

    npTBnqPp99nLd5fU0%2btJbq%2fY%2bdf2UFWTaq5D28Az7Jw%3dzF8cIHNxTWX399sbmowjheho2S29ocpKs1TXD51BrbyPPNCeLfAcYqWhkRHqWdwKJNED5kuspllIjhI5rf2W6NKtf8xo68BlF5eLLgJxMtAxw2yD2ednEzUazq1XBt2Id77t5LE5tZVwkpRGDT5b9J0nQnr9zfzCOALXb2hQQGBPkMVyNNTO24pW1UC6Uda3B86LLYA02Jgy4G9DiT6KsutR3pSXO8AZFOlcmAEHbSSX9A8FAHaL ... etc. 
    
    • 然後我搜索一個不同的搜索詞,它調用這一位代碼: --Session.DeleteAll();
    • 南希會話重新填充新的數據並返回給瀏覽器

但是在這一點上的cookie尚未更新用新值仍然如下:

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

還有什麼我需要做的解決這個?

+0

我知道你說你已經排除了CORS,但你可能希望看看這篇文章,看看它是否引發任何見解 - http://stackoverflow.com/questions/2870371/why-is-jquerys -ajax-method-not-sending-my-session-cookie –

+1

否則請加入我們的NancyFX JabbR會議室,與開發人員和其他用戶交談https://jabbr.net/#/rooms/nancyfx –

回答

0

所以我的問題是我真的有點傻,餅乾的實施效果很好,但是有些時候我在餅乾裏塞了太多東西,並且把它推到了4K cookie的限制。

這意味着我看到一些不一致的行爲,有時候cookie有時會很好地工作(cookie爲< 4K),其中一些搜索條目過多地寫入cookie,意味着cookie從未被創建或者它並未覆蓋現有的cookie。

所以,是的,是我的錯,但認爲這個答案可能會幫助別人的愚蠢的我想使世界存儲在cookie中..

右鍵我要去寫一個會話提供。