장기 실행 작업이 끝날 때까지 ASP.NET 페이지를 유지하는 가장 좋은 방법은 무엇입니까? [닫은
-
05-09-2019 - |
문제
자바 스크립트?
메타 태그 새로 고침?
Response.Redirect (자기)
Server.Transfer (자기)
Ajax 업데이트 패널?
해결책
옵션을 살펴 보겠습니다.
자바 스크립트?
사용자가 비활성화하지 않는 한 잘 작동합니다.
메타 태그 새로 고침?
JavaScript 방법에 유리한 더 이상 사용되지 않은 방법. 그러나 사용자가 JavaScript를 비활성화 한 경우 백업으로 사용할 수 있습니다.
Response.Redirect (자기)
브라우저가 리디렉션하는 동안 사용자에게 유용하지 않기 때문에 작동하지 않습니다. 또한 브라우저는 사용자를 무한 리디렉션으로부터 보호하기 위해 특정 수의 리디렉션 후 요청을 중지합니다.
Server.Transfer (자기)
서버의 코드는 브라우저에 아무것도 보내지 않고 루프만으로도 작동하지 않습니다. 효과는 코드에 루프를 갖는 것과 동일합니다.
Ajax 업데이트 패널?
사용자가 JavaScript를 비활성화하지 않는 한 잘 작동합니다. 기본적으로 첫 번째 옵션과 동일합니다. JavaScript만이 브라우저가 요청을하도록 요청 자체를 수행합니다.
다른 팁
어떤 종류의 진행 상황을 사용자에게보고 할 수 있다면, 나는 ASXH와 변형으로 실행하는 경향이 있습니다. 영원히 프레임. 약간 추가하십시오 jQuery UI 대화 상자 그리고 JQuery UI 진행률 표시 줄 그리고 서버에서 무거운 리프팅을하는 동안 사용자를주의를 기울이는 반짝이는 방법이 있습니다.
나는 몇 가지 예제 코드를 주었다 874204 그것은 기술을 보여줍니다.
사용자에게 진행할 수없는 경우 여전히 UI 대화 상자를 사용하는 경향이 있으며 웹이있는 두 개의 도트 OH 준수 Spinny GIF와 함께 "제발 기다리며 처리합니다 ..."메시지를 나타냅니다.
이 기사를 확인하십시오 비동기 페이지. 여기에도 예입니다 CodeProject 여기에는 비동기 페이지와 메타 리프레 쉬가 포함됩니다.
Beer House 스타터 키트에서 이러한 종류의 기능을 샘플 구현 할 수 있습니다. http://www.asp.net/downloads/starter-kits/the-beer-house/.
SendNewSletter.aspx 및 SendNewsletter.aspx를 보내는 페이지가 유용합니다. 이것은 당신의 필요에 대한 과잉 일 수 있지만, 장기적인 운영의 진행 상황을 보여줍니다.
Ajax를 사용하고 UpdateProgress를 표시하여 사용자가 여전히 휘젓고 있음을 알 수 있습니다.