2009-12-16 2 views
0

작동하지 않습니다 메소드 GenerateTeacherCountCrossRegions 오랜 시간 동안 실행 된 경우Response.Redirect를 ("page.aspx")는 항상이 코드 내 응용 프로그램에서

CreditsSubjectsNamesTeacherCount n = new CreditsSubjectsNamesTeacherCount(); 
Session["UserID"] = n.GenerateTeacherCountCrossRegions(txtStartYear.Text.CheckOnEmptyYear(), ((UserInformation)Session["UserInformation"]).UserName); 
Response.Redirect("page.aspx"); 


나던 리디렉션 (~> 10 분). 이 문제의 원인은 무엇입니까?
추신 : 추가 :
<httpRuntime executionTimeout="18000".. >하지만 도움이되지 않았습니다.
감사합니다.

+0

GenerateTaeacherCountCrossRegions 메소드가 10 분 이상 걸리는 이유는 무엇입니까? 어쩌면 그냥 증상을 고치기 전에 이것을 확인해야합니다 .. – nWorx

+0

맞습니다.하지만 너무 많은 작업이 있고 그 알고리즘을 최적화 할 시간이 없습니다 (클라이언트는 대기 시간 (심지어 그 사람이 밤에 보고서 생성을 남겨 둘 것입니다.) + 그는이 기능에 대해 비용을 지불하지 않습니다.) – 0x49D1

답변

2

브라우저가 페이지 대기를 더 이상 멈추지 않으므로 더 이상 연결되어 있지 않습니다. 서버는 아무도 듣지 않는 void로 리다이렉트를 보낸다.

응답을 완료 할 때까지 기다리지 않아도되도록 별도의 스레드에서 작업을 시작하십시오. 가끔씩 다시로드되는 페이지로 리디렉션하여 작업 상태를 확인하고 작업이 완료되면 최종 페이지로 리디렉션합니다.

배경 스레드와 통신하려면 두 스레드 모두에 대한 참조가 필요한 개체가 필요합니다. 세션 변수에 객체에 대한 참조를 저장할 수 있으므로 상태를 확인하는 페이지에 액세스 할 수 있습니다.

+0

백그라운드 스레드 추가 + 페이지의 업데이트 패널 제거 및 지금 작동합니다. (tho는 진행률 표시 기능을 관리하지 않았지만, 하지만 여전히 ..) – 0x49D1

3

요청이 시간 초과되었습니다. Response.Redirect는 브라우저에 다른 페이지를 요청하도록 요청하는 HTTP 응답을 보냅니다. 요청이 브라우저에서 시간 초과 된 경우이 응답을받지 않습니다.

+0

답변 해 주셔서 감사합니다. 같은 생각을 가지고 있었지만 web.config에서 executionTimeout을 변경해도 도움이되지 않았습니다. 내가 할지도 몰라요. 뭔가 놓친거야? – 0x49D1

+1

시간 초과가 브라우저 측에 있으므로 서버의 설정을 변경해도 도움이되지 않습니다 ... – RickNZ

+1

저는 이것이 클라이언트 측 시간 초과라고 생각합니다. 서버 측 설정에서 제어 할 수있는 것이 아닙니다 ... –

0

요청 시간이 초과되어 브라우저가 예상되는 페이지가 아닌 오류를 표시합니다. 디버깅 중에는 배포시에만이 작업이 수행되지 않을 수 있습니다.

이런 종류의 장기간 작동을 위해서는 다른 인터페이스를 고려하십시오.

분석 된 데이터가 계산 될 때 전자 메일로 사용자에게 전송되는 시스템을 만들었습니다. 내부적으로 BackgroundWorker 스레드를 생성하여 계산을 수행 한 다음 MailMessage을 사용하여 보고서를 PDF 첨부.

관련 문제