난 단순한 웹 서비스로 .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();
}
그것은 모두 작동하고, 바뀔 것이고, 보안을 추가 할 것입니다.) 다른면에서 위의 동작 주소로 간단한 GET HttpWebRequest를 작성하고 웹 페이지를 기다리고 있습니다. 응답. 사용자에게 표시 될 수있는 "대기열 시작됨"과 같은 메시지를 다시 보낼 수 있기를 바랬습니다. –
같은 컨트롤러/액션 모습이 한 번 내가 할 (액션 홈 컨트롤러의 내부에 무엇을 – andrewheins
표시하십시오. –