2011-09-05 1 views
2

MVC3 애플리케이션이 있습니다. 하나의 uri 요청에 지연을 추가해야합니다. 가장 간단한 방법은 수면을하는 것입니다.하지만 프로덕션의 응용 프로그램에는 많은 요청이 있으며 다른 요청에 대한 응답으로 스레드가없는 iis가 두려워합니다.MVC3 요청 지연이 필요합니다.

솔루션에 대한 비동기 컨트롤러/동작을보고 있습니다.

iis thead pool이 "actionSync"메소드 내에서 thread.sleep을 수행하는 것이 더 낫습니다.

어떻게 지연을 해결할 수 있습니까? 어쩌면 내부에있는 thread.sleep을 사용하는 새로운 웹 서비스를 호출하는 비동기 작업일까요? 내가 mvc3의 앱이 mvc3 응용 프로그램에 대한 IIS 사용 가능한 스레드에 영향을 미치는 같은 IIS에 웹 서비스를 배포하는 경우이 경우

AsyncManager.OutstandingOperations.Increment(); 
    DelayService delayService = new DelayService(); 
    delayService.GetDelayCompleted += (sender, e) => 
    { 
     AsyncManager.Parameters["result"] = e.Value; 
     AsyncManager.OutstandingOperations.Decrement(); 
    }; 
    newsService.GetDelayAsync(seconds); 

? if가 다른 응용 프로그램 풀에 배포되는 이유는 무엇입니까?

무엇이 있습니까?

+0

이 왜 지연 클라이언트 측을하지 않는다 :

그렇다면, 이것은 가능한 해결책이 될 수 있는가? – ZippyV

+0

나는 이미 한 적이 있지만 비보안 방법이며 지연을 피하거나 지연 후 요청을 보내는 것이 가능합니다. 내 데이터가 지속적으로 변경되며 하나의 요청을 수락하기 전에 지연이 완료되었는지 확인해야합니다. 더 이상 필요하지 않습니다. 이 방법으로 지연 범위 (지연과 연결 지연)에서 요청을 받아 들여야하고 느린 연결을 거부 할 수 있습니다. 예를 들어 나의 지연이 4 인 경우 min은 4이고 느린 연결이나 모바일의 경우 최대 7 일 것입니다. 해킹 의도를 피하기 위해 나는 4 초 이하의 시간을 거절해야하며 가장 좋은 해결책은 서버에서 지연을 얻는 것입니다. – Fer

답변

0

Microsoft에서 출시 한 새로운 ASP.NET MVC 4 비트를 사용해 볼 수 있습니까?

public class TestController : AsyncController { 
    public async Task<ActionResult> GetData() { 
     await Task.Delay(5000); 

     return Content("Done"); 
    } 
}