2013-07-18 5 views
7

MVC에 대한 제 이해가 치명적인 결함이라고 생각합니다. 나는 항상 컨트롤러의 액션 메소드가 무 상태이고 컨트롤러 자체가 무 상태라고 가정했다.작업은 상태 비 저장이지만 컨트롤러는 상태 비 저장 중입니까?

그래서 작업이 호출 될 때마다 컨트롤러의 새 인스턴스가 생성됩니까?

+2

예, 컨트롤러는 개체입니다 ... IIS는 주문형 서버입니다. 작업 실행 컨트롤러 객체가 삭제 된 후. – YD1m

답변

4

컨트롤러의 새로운 인스턴스로 들어오는 모든 요청 만들어집니다이 고려하십시오.

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return MoreIndex(); 
    } 

    public ActionResult MoreIndex() 
    { 
     return View(); 
    } 
} 

/Home/Index에 대한 들어오는 요청이 두 가지 작업을 입력하지만, 단 하나의 컨트롤러가 생성됩니다. /Home/MoreIndex에 대한 요청은 하나의 작업으로 들어가고 하나의 컨트롤러가 생성됩니다. 이제는 컨트롤러를 수동으로 생성하여 유지하고 재사용 할 수 없습니다. 그러나 HTTP에서 오는 실제 요청과 관련해서는 결코 존재하지 않습니다.

+1

이 페이지는 유용한 정보를 제공합니다 : http://blog.christopheargento.net/2012/06/11/detailed-life-cycle-of-an-asp-net-mvc-request/ –

1

컨트롤러에 상태가있는 것이 합리적입니다. 나는 보통 데이터베이스 연결을 공통 컨트롤러 기본 클래스에서 참조한다. 이러한 이유 때문에 MVC는 각 요청에 대해 새로운 컨트롤러를 생성하고 적절하게 처리합니다.

관련 문제