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 컨트롤러의 수명주기에 대한 좋은 설명이 있습니다.
참고 URL : https://stackoverflow.com/questions/1763775/asp-net-mvc-controller-lifecycle
'Program Club' 카테고리의 다른 글
| NewtonSoft.Json 유형 IEnumerable의 속성을 사용하여 클래스 직렬화 및 역 직렬화 (0) | 2020.11.24 |
|---|---|
| 두 구문의 의미 적 유사성을 알려주는 알고리즘이 있습니까? (0) | 2020.11.24 |
| requestAnimationFrame 재귀 / 루프를 중지하는 방법은 무엇입니까? (0) | 2020.11.23 |
| @ Url.Action에서 컨트롤러 함수로 매개 변수를 전달하는 방법 (0) | 2020.11.23 |
| CodeIgniter의 뷰 내에 뷰를 포함하는 가장 좋은 방법 (0) | 2020.11.23 |