2011-04-19 4 views
0

난 단순한 웹 서비스로 .Net MVC 응용 프로그램을 사용하고 있습니다.HttpWebResponse 반환 ASP.Net MVC

public void RunQueue() 
    { 
     QueueDelegate queue = new QueueDelegate(Queue); 
     AsyncCallback completedCallback = new AsyncCallback(QueueCompleteCallback); 

     lock (_sync) 
     { 
      if (!queueIsRunning) 
      { 
       AsyncOperation async = AsyncOperationManager.CreateOperation(null); 
       queue.BeginInvoke(QueueCompleteCallback, async); 
       queueIsRunning = true; 
      } 
     } 
    } 

과 희망을 내가 그것을 호출 할 때, 그것은 큐를 시작하고 사용자가 자신의 일에 계속 할 수 있다는 것입니다 (그들은거야 :

는 내가 전화를 비동기 방식을 가지고 대기열이 완료되면 이메일을받습니다.)

현재로서는 사용자가 계속 진행하는 대신 "웹 서비스"를 호출하는 웹 페이지가 멈추고 결국 요청이 만료되는 것을 제외하고는 모든 것이 잘 작동합니다.

HttpWebResponse를 어떻게 작성하고 다른 서버로 보내 사용자가 계속 진행할 수 있습니까?

나는 "무효"이외의 것을 반환하도록 노력했지만 그 정도는하지 않습니다.

다음은이를 호출하는 컨트롤러입니다.

public ActionResult StartQueue() 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:2394/Home/RunQueue/"); 
     HttpWebResponse response; 
     string r = ""; 
     try 
     { 
      response = (HttpWebResponse)request.GetResponse(); 
      Stream stream = response.GetResponseStream(); 

      StreamReader reader = new StreamReader(stream); 
      r = reader.ReadToEnd(); 
     } 
     catch (WebException ex) // A WebException is not fatal. Record the status code. 
     { 
      response = (HttpWebResponse)ex.Response; 
      if (response != null) // timeout 
      { 
       r = response.StatusCode.ToString(); 
      } 
     } 
     ViewData["message"] = r; 
     return View(); 
    } 
+1

그것은 모두 작동하고, 바뀔 것이고, 보안을 추가 할 것입니다.) 다른면에서 위의 동작 주소로 간단한 GET HttpWebRequest를 작성하고 웹 페이지를 기다리고 있습니다. 응답. 사용자에게 표시 될 수있는 "대기열 시작됨"과 같은 메시지를 다시 보낼 수 있기를 바랬습니다. –

+0

같은 컨트롤러/액션 모습이 한 번 내가 할 (액션 홈 컨트롤러의 내부에 무엇을 – andrewheins

+0

표시하십시오. –

답변

0

QueueDelegate 클래스 란 무엇입니까? 내 생각 엔 요청이 다른 스레드가 완료 될 때까지 대기 중일 것입니다 (어쩌면 Thread.Join()과 같은 것입니까?). 응답을 보내는 것이 당신이 원하는 해결책이라고 생각하지 않습니다. 현재 요청에서 연결이 끊어져서 자연스럽게 끝나는 스레드를 생성하는 방법을 찾거나 Windows와 같은 것으로 완벽하게 논리를 옮기는 것이 좋습니다. 서비스.

웹 컨텍스트에서 장기 실행 프로세스를 호스팅은 복잡 할 것이다 기껏 :(

지금은?
관련 문제