Program Club

ASP.NET MVC 컨트롤러 수명주기

proclub 2020. 11. 24. 20:24
반응형

ASP.NET MVC 컨트롤러 수명주기


컨트롤러의 생성자는 각 웹 요청 중에 호출되지 않는다는 것을 이해합니다. 이것이 사실이라고 가정하면 컨트롤러의 수명주기는 무엇입니까? 앱 시작시 "구성"된 다음 캐시되고 각 웹 요청과 함께 requestcontext가 주입 된 상태로 호출됩니까?

명확하게 말하면 생성자 동작을 에뮬레이트하는 방법을 묻는 것이 아니라 OnActionExecuting 이벤트를 사용하여 일반적으로 생성자에서 수행하는 작업을 시작합니다. 또한 단위 및 시스템 테스트를 위해 컨트롤러에서 생성자를 사용합니다.

감사!


기본 컨트롤러 팩토리 를 사용하는 경우 각 요청에 대해 새 인스턴스가 생성되며 그렇게해야합니다. 컨트롤러는 서로 다른 요청간에 공유되어서는 안됩니다. 컨트롤러의 수명을 관리하는 커스텀 팩토리를 작성할 수 있습니다.


두렵습니다. 이해가 잘못되었습니다. 컨트롤러 (매우 얇고 가벼운 클래스 여야하며 세션 만료 상태가 없어야 함)는 실제로 각 웹 요청에 대해 즉석에서 구성됩니다. 컨트롤러 인스턴스가 특정 뷰에 특정한 다른 방법은 무엇입니까?

따라서 "라이프 사이클"과 같은 것은 없습니다 (요청의 것 외에) ...


사용자가 수행하는 모든 요청에 ​​대해 컨트롤러가 생성됩니다. 예를 들어 보겠습니다.

   public class ExampleController : Controller{
           public static userName;

            public void Action1(){//do stuff}
            public void Action2(){//do stuff}
            public void AssignUserName(string username){
                 userName = username;

            }
           public string GetName(){ return userName;}


   }

이제 사용자 이름을 전달하는 뷰에서 컨트롤러를 호출 할 수 있습니다. 다음 요청에서 설정 한 userName을 가져 오지 않기를 바랍니다. null을 반환합니다. 따라서 모든 요청에 ​​대해 새 컨트롤러가 생성됩니다. 클래스에서 개체를 instatiate하는 것처럼 MVC의 어느 곳에서도 컨트롤러를 인스턴스화하지 않습니다. 단순히 다른 개체와 마찬가지로 호출 할 컨트롤러 개체 메모리 포인터가 없습니다.

이 링크로 이동하십시오. MVC 컨트롤러의 수명주기에 대한 좋은 설명이 있습니다.

ASP.Net MVC-요청 수명주기

참고 URL : https://stackoverflow.com/questions/1763775/asp-net-mvc-controller-lifecycle

반응형