ASP.NET MVC에서 간단한 PDF 업 로더를 구현했으며 업로드 된 문서를 처리해야합니다. 처리에는 시간이 걸릴 수 있으므로이 작업을 백그라운드에서 수행하고 싶습니다. 워크 플로우는 다음과 같습니다. 사용자가 문서를 업로드하고 문서를 데이터베이스에 저장하면 새 문서 업로드를 포함하여 웹 사이트에서 다른 작업을 수행 할 수 있어야합니다. 사용자는 백그라운드에서 처리하는 것에 대해 아무 것도 알지 않아야합니다.백그라운드 작업 시작 ASP.NET MVC 4.5
내 구현은 다음과 같은 :
[HttpPost]
public async virtual Task<ActionResult> Confirm(string author, string title)
{
//...
previousDocumentIsProcessing = true;
await InvokeDocumentProcessor(_document.Path, _document.DocumentID);
previousDocumentIsProcessing = false;
return View("Success");
}
문제는 처리 완료 후 "성공"뷰가 표시되고 있다는 점이다. 사용자는 작업이 비동기이기 때문에 주위를 클릭하고 다른 작업을 수행 할 수 있지만 백그라운드 프로세스를 만들고 시작하고 즉시 시작하여 "성공"보기를 표시하려고합니다. 사용자는 처리에 신경을 쓰면 안됩니다.
어떻게하면됩니까? 백그라운드 작업자와 시도했지만 작동하지 않았습니다. 비동기 프로세스를 시작할 수 없다는 오류가 나타납니다.
내가 뭐하는 거지 모두가 (말씀으로 워드) PDF 파일의 내용을 추출로 저장하기 때문에 사용자가 처리를 인식하지 않아야 확신 데이터베이스를 검색하여 업로드 된 문서를 검색 할 수 있도록합니다. Windows Azure의 솔루션은 정말 훌륭하지만, 이것은 단순한 대학 프로젝트이며 Windows Azure를 사용하는 것은 옵션이 아닙니다. "부적절한"해결책을 검토하고 다시 연락 드리겠습니다. 답변 해 주셔서 감사합니다 :) – mobearette
Azure 작업자 역할과 동일한 역할을하는 Windows 서비스 또는 콘솔 응용 프로그램을 가질 수 있습니다. Stephen은 패턴의 구현을 제안했습니다. –
수정. Azure 예제는 예제 일뿐입니다. 로컬 파일 시스템, MSMQ (또는 로컬 데이터베이스) 및 Win32 서비스를 사용할 수도 있습니다. –