컨트롤러가 생성됩니다 ...는 "라이프 사이클"(요청 이외의) 같은 것은 존재하지 않는다. 예를 들어 보겠습니다.
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가 돌려 주어집니다. 따라서 모든 요청에 대해 새로운 컨트롤러가 생성됩니다. 클래스에서 객체를 인스턴스화하는 것처럼 MVC의 어느 곳에서나 컨트롤러를 인스턴스화하지 않습니다. 단순히 다른 객체와 마찬가지로 컨트롤러 객체 메모리 포인터를 호출하지 않아도됩니다.
이 링크로 이동하십시오. MVC 컨트롤러의 수명주기에 대한 좋은 설명이 있습니다.
ASP.Net MVC - Request Life Cycle
왜 그래도? 왜? –
나는 왜 망설이고 이것이 왜 그런지와 틀림없이 나 자신에게 가르쳤다. EF를 사용하여 읽기/쓰기 작업과보기로 컨트롤러를 생성했습니다. 생성 된 코드는 EF 컨텍스트 인스턴스에 대한 전용 인스턴스 변수를 생성했습니다. 나는 똑똑하고 정적 인 변수로 만들 것이라고 생각했습니다. 문제는이 컨트롤러의 범위 밖에있는 것이 데이터베이스를 수정하면 정적 컨텍스트가 결코 알 수 없다는 것입니다. 이제 인스턴스 변수로 남겨두고 각 요청마다 새 인스턴스가 만들어지기 때문에 컨텍스트는 데이터베이스에 대한 모든 변경 사항을 볼 수 있습니다. – ThatAintWorking
모든 상태가 매개 변수 (즉, 기능 스타일)에 포함되어있는 웹 API에서 컨트롤러를 재사용 할 수없는 이유는 무엇인지 알 수 있습니다. 이것은 설계 상 thread로부터 안전합니다. –