2017-12-06 2 views
5

나는 asp.net mvc 응용 프로그램을 가지고 있는데, 나는이 이상한 일이 일어나고 있으며 나는 왜 그런지 모릅니다.쿠키가 삭제되고 있습니다.

상황 :

나는 사용자가 그리는 이미지를 편집 할 수있는 페이지가 있습니다. 이 페이지에는 5 분마다 jquery을 사용하여 서버에 대한 ajax 호출을 작성하고 데이터베이스의 현재 프로젝트 상태를 저장하고 적절한 위치에 저장소 인 프로젝트의 이미지를 저장하는 또 다른 호출을 저장하는 기능이 있습니다 .

문제 :이 기능은 서버에 아약스 호출 후 쿠키 고객은 입니다 시작됩니다 최소화 브라우저와

을 삭제. 그러나 크롬이 최대화되면 이것은 잘 작동합니다.

참고 : 브라우저는 적어도, 크롬 및 파이어 폭스에서 이런 일이

  • 을 최소화 될 때

    1. 에만이 발생합니다.
    2. 프로덕션 환경에서만 발생합니다. 당신이 줄 수 있다면 내 로컬 컴퓨터에 비주얼 스튜디오에 난, 난 당신이 정보 만 도움을 위해 그 어려운 것을 알고

  • asp.net 세션 쿠키 mantainned됩니다
  • 문제를 재현 할 수는 없지만 나 단서가 정말 도움이 될 것입니다. 이 문제에 대한 최선의 해결책을 찾기 위해 유사한 문제를 해결할 수 있도록 문제를 폭로하려고합니다.

    [편집] 사전에 감사합니다

    내가 문제에 대한 몇 가지 새로운 있습니다

    1. 크롬 버전 63.0.3239.84 (공식 빌드)를 사용하여을 (64 비트);
    2. 파이어 폭스 퀀텀 57.0 (64 비트);
    3. 내가 처음 생각한 것과는 달리 브라우저가 최소화되지 않았고 페이지로드 후 정확히 3 분이 걸리지 만 (기능을 호출하는 경우)
    4. 쿠키가 삭제되지 않지만 쿠키의 콘텐츠는 다음과 같습니다. :

      : enter image description here
    5. 이것은 asp.net 웹 응용 프로그램 콘솔은
    6. 쿼리의 버전이 2.1.3
    7. 이다가 jquery 전화 코드를 따릅니다 오류를 제공하지 않습니다

    8. 입니다
      makeAjaxCall(ajaxData) { 
      var localData = ajaxData.data ? ajaxData.data : {}, 
          urlVariables = {}; 
      
      localData.cmd = ajaxData.cmd; 
      
      var controlerURL = ajaxData.uploadUrl ? HelperJSViewBag.getValue("ajaxCAllUploadURL") : ajaxData.controller; 
      
      if (typeof ajaxData.data.urlVariables == "undefined") 
          ajaxData.data.urlVariables = []; 
      
      let editorVersion = ""; 
      let forceEditorVersion = ""; 
      
      if (typeof UrlParameters != "undefined") { 
          editorVersion = UrlParameters.getInstance().editorVersion; 
          forceEditorVersion = UrlParameters.getInstance().forceEditorVersion; 
      } 
      else if (typeof HLinks != "undefined") { 
          editorVersion = HLinks.getUrlVariable("editorVersion"); 
          forceEditorVersion = HLinks.getUrlVariable("forceEditorVersion"); 
      } 
      
      if (editorVersion.length > 0) 
          ajaxData.data.urlVariables.push({ 
           name: "editorVersion", 
           value: editorVersion, 
          }); 
      
      if (forceEditorVersion.length > 0) 
          ajaxData.data.urlVariables.push({ 
           name: "forceEditorVersion", 
           value: forceEditorVersion, 
          }); 
      
      if (typeof ajaxData.data.urlVariables != "undefined" && ajaxData.data.urlVariables.length > 0) 
          for (var i = 0; i < ajaxData.data.urlVariables.length; i++) 
           urlVariables[ajaxData.data.urlVariables[i].name] = ajaxData.data.urlVariables[i].value; 
      
      localData = this.fillLocalData(localData); 
      
      return $.ajax({ 
          type: 'POST', 
          data: localData, 
          url: controlerURL + "?" + $.param(urlVariables), 
          success: function (data) { 
           try { 
            var result = JSON.parse(data), 
             status = result.status; 
      
            delete result.status 
            switch (status) { 
             case 1: ajaxData.sucess && ajaxData.sucess(result.data); break; 
             case 2: ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(result)); break; 
            } 
           } 
           catch (ex) { 
            ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(ex)); 
           } 
          }, 
          error: function (data) { 
           ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(data)); 
          } 
      }); 
      } 
      
  • +2

    네트워크 탭을 활성화 한 다음 브라우저를 최소화 할 수 있습니까? 또한 무슨 일이 일어나고 있는지 알 수 있도록 console.log에 time print를 넣으십시오. 어떤 이유로 세션 시간이 초과되었거나 호출이 만들어지지 않았는지 확인하십시오. 나는 당신이 setTimeout 또는 setInterval을 사용하고 있다고 가정합니까? 어떤 경우 든 로깅을 추가하고 콘솔을 최소화 한 후 확인하십시오. –

    +0

    이것은 도면과 관련되어 있으므로 최소화 할 때 화면을 읽는 데 약간의 문제가있을 수 있습니다. ajax 호출을하기 전에 쿠키를 삭제하면 ajax 호출이 실패하여 쿠키가 삭제 될 수 있습니다. – cytsunny

    +0

    쿠키를 생성하는 데 사용하는 코드는 무엇입니까? 이 경우 콘솔 오류가 발생합니까? 테스트를 위해 사용중인 Chrome 및 FF의 버전은 무엇입니까? – Twisty

    답변

    0

    나는 ASP에 코드를보고 싶습니다.NET 측면,하지만 그, 난 단지 추측 수 있습니다 : 아마도 쿠키 만료 날짜를 설정하는지 확인하십시오?

    Dim myCookie As HttpCookie = New HttpCookie("Customer") 
    myCookie.Expires = Now.AddDays(1) 
    Response.Cookies.Add(myCookie) 
    

    당신이 myCookie.Expires 속성을 생략하면, 쿠키, "사용자 세션이 만료 될 때 만료됩니다"REF : 여기에 일일 만료로 생성되는 쿠키의 예입니다. (쿠키를 만드는 경우 코드 내에서) https://msdn.microsoft.com/en-us/library/78c837bd.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

    0
    1. 당신은 당신의 쿠키의 만료 시간을 증가시킬 수있다.

    2. 코드 대신 localStorage을 쿠키에 사용하여 값을 저장할 수 있습니다.

    값을 설정하기 위해 examlpe localStorage.setItem localStorage.getItem

    및 로컬 스토리지로부터 값을 취득한다.

    관련 문제