2012-08-27 4 views
0

내 솔루션에서 js 비동기 콜백에 문제가 있습니다. 다음은 req입니다.동시에 페이지를 다시 게시 할 때 비동기 콜백 실패

  1. 사용자가 'Excel 생성'버튼을 클릭합니다.
  2. 서버 엑셀 파일이 대량의 데이터로 생성되고 있습니다 (약 2 분 소요).
  3. 이 기간 동안 사용자는 페이지 포스트 백/요청/등을 포함하여 응용 프로그램에서 다른 작업을 수행 할 수 있습니다.
  4. 엑셀이 생성되면 사용자는 사용자가있는 페이지와 관계없이 서버에서 파일을 다운로드하는 팝업이 제공됩니다.

내가 무슨 짓을 : 비즈니스 요구 'GenerateReport'w.r.t 엑셀 파일을 생성하는 함수를 작성

  • . (서버 측)
  • 파일 일부 서버 위치에 GenerateReport 방법에 의해 생성 된 새로운 파일의 파일 경로를 반환되었는지 재귀 확인 하나의 WebMethod 'GetFilePath'를 쓴,이 방법은 절대 같은 파일을 반환 비즈니스 논리에 따라 다시 경로. (서버 측)
  • 등재 한 자바 스크립트 함수 재귀 60 초의 지연과 GetFilePath 메소드를 호출 DownloadLink(). 함수 호출은 다음과 같습니다.

    PageMethods.GetFilePath (UserId, onSuccess, onError);

  • OnSuccess 및 OnError는 JS 콜백 함수이며 파일 다운로드 URL을 사용할 수있게되면 OnSuccess가 실행되며이 JS 메서드는 다운로드를 위해 팝업을 표시하고 오류 발생시 OnError가 호출됩니다.

다음 시나리오가 발생할 때까지 제대로 작동합니다. GetFilePath 메서드에서 OnSuccess가 호출되고 다른 작업에 대한 포스트 백이 동시에 발생하면, OnSuccess 호출은 새 페이지가 아직로드되지 않았기 때문에 OnSuccess 호출이 생성되지 않고 다운로드 팝업이 사용자에게 표시되지 않습니다.

사용자가 다운로드 링크를 얻을 수 있도록이 문제를 해결하려면 어떻게해야합니까?

+0

1. 사용자 이메일 주소를 입력하고 파일 경로가 가장 좋은 해결책으로 메일을 보내십시오. 2. 모든 페이지로드시 파일로드가 생성되었는지 확인하십시오. 파일을 사용할 수있는 경우 생성합니다. –

+0

@AnantDabhi, 파일 저장 팝업은 파일이 서버에 생성 될 때마다 표시되어야합니다. 사용자가 응용 프로그램에 있습니다. 어떤 종류의 포스트 백이 필요하기 때문에 페이지로드에 의존 할 수 없습니다. 이메일은 쉽지만 내 전화가 아니야. ( – Gaurav

답변

0

60 초마다 확인과 함께 페이지가 처음로드 될 때 다운로드 링크가 준비되어 있는지 확인하십시오.

+0

Webmethod ** GetFilePath **는 서버 폴더에서 올바른 파일을 가져 와서 파일 이름 앞에 '_downloaded'를 추가합니다. 예를 들어 1.xls는 1_downloaded가됩니다. 이렇게하면 이미 전송 된 일부 링크가 해당 메소드에서 매번 사용자에게 다시 전송되지 않습니다.이름이 변경되고 Onsuccess의 OP에서 언급 된 문제가 호출되지 않으면 동일한 링크가 사용자에게 다시 전송되지 않으며 사용자는 링크를 다시 얻지 못합니다. PageLoad를 사용하면 파일이 이미 서버에서 이름이 바뀌어 문제가 해결되지 않습니다. – Gaurav

+0

아마도 세션과 같은 페이지 사이에 상태를 사용해야 할 수도 있습니다. –

+0

비슷한 결과를 얻는 완전히 다른 방법이 있습니까? – Gaurav