이전 ASP.NET 응용 프로그램에는 웹 페이지에 필요한 모든 데이터 인 "컨텍스트"개념이있었습니다. 따라서 컨텍스트는 사이트 자체에 대한 데이터를 포함 할 수 있으며 최종 사용 내역, 등, 등을 포함 할 수 있습니다.ASP.NET 핵심 응용 프로그램의 컨텍스트 설정 방법
요청의 수명주기가 시작되는 동안 전체 컨텍스트가 HttpModule에 의해로드되었습니다. 컨텍스트의 각 부분은 캐시 또는 현재 항목 컬렉션에서 개최되었습니다 (정보를 보유하려는 기간에 따라 다름). 페이지는 컨텍스트를 필요할 때 호출합니다.
그래서 .NET 코어에서 비슷한 점을 달성하는 최선의 방법이 궁금합니다.
우리는 최종 사용자의 데이터의 사소한 예를 취할 경우
....내 생각은이 데이터 "는 EndUser"라는 개체에서 개최 될 수 있다고했다. 컨트롤러의 생성자는 유형 IEndUser의 인수를 가질 수있다, 우리는이 Startup.cs이의 인스턴스를 추가하는 의존성 삽입 (Dependency Injection)에 내장 사용할 수 있습니다
이services.AddScoped<IEndUser, EndUser>();
물론 이것은 바닐라는 EndUser 객체를 추가,하지만 난 희망 "AddScoped"를 사용하고 있기 때문에 MiddleWare 클래스를 사용하여 처음부터 모든 속성을 설정할 수있었습니다. 그러면 컨트롤러의 생성자가 MiddleWare가 방금 채운 인스턴스와 동일한 인스턴스를 받게 될 것입니다. 그러나, 나는 곧 이것이 서로 다른 목표 (오히려 분명히 뒤늦은 지경에 있음)이며 이것이 잘못된 접근이라는 것을 깨달았다.
그래서 올바른 접근 방법은 무엇입니까? 마음에 다음과 같은 곰 : 이전 HttpModule을 가진
- 을 하나합니다 (는 EndUser 객체 유사한 개념) 사이트 객체 (DB에서 데이터를로드)을로드하고 HttpModule의 검사에서 수있는 경우 site.OnMaintenance 속성 이 경우 현재 요청과 관계없이 실행이 요청 된 컨트롤러에 들어가기 전에 해당 페이지로 리디렉션을 수행합니다.
그래서 내가 좋아하는 것, 요약 :
- 내 미들웨어 클래스를 생성하고
- 내 미들웨어 해당 클래스의 속성에 대한 테스트를 수행하기 위해 (데이터베이스에서) 속성을 채 웁니다 잠재적으로 리디렉션을 수행합니다.
- 리디렉션이 없으면 해당 인스턴스를 내 컨트롤러의 생성자에 삽입하십시오.