2012-08-31 6 views
0

HttpContext에 크게 의존하는 메소드를 호출해야하는 콘솔 응용 프로그램을 만드는 중입니다. 인증뿐만 아니라 기본 HttpContext를 시뮬레이션 할 수 있지만 HttpContext.Current.Application을 설정하지 못했습니다. 거기에 데이터를 설정할 수 있습니까?콘솔 응용 프로그램에서 HttpContext.Current.Application을 설정하십시오.

여기에 과장된 주제에 대해 몇 가지 질문이 있지만 해결 방법을 찾을 수 없어 결국 여기에 다른 질문이 게시되었습니다.

내 목표는이 작업을 수행하는 것입니다.

HttpContext.Current.Application("PageDefinitionCache") = pageDefinitions 

제안 사항이 있으십니까?

답변

2

캐시는 ASP.NET 작업자 프로세스 내에 있으며 콘솔 응용 프로그램에서 직접 액세스 할 수 없습니다. 콘솔 응용 프로그램에서 aspx.net 작업자 프로세스를 사용하지 않으므로 HttpContext.Currentnull입니다.

HttpContext.Current.Application의 동작을 시뮬레이션하려면 콘솔 응용 프로그램에서 전역 변수를 선언하는 것이 좋습니다.

+0

감사합니다. 죄송합니다. 오랫동안 tih에주의를 기울이지 않았습니다. 동일한 코드 기반이 웹 아키텍처에도 사용 되었기 때문에 Application 객체를 다시 쓰거나 시뮬레이션 할 수 없습니다. 그래서 필요한 개체의 데이터가 'NULL'인 경우 다시 채워서 문제를 해결했습니다. 이 방법으로 두 아키텍처 모두에서 동일한 코드가 잘 작동하도록 할 수 있습니다. – Kris

+0

이제 유사한 응용 프로그램을 다시 구현해야 할 때 Interface를 구현하고 웹 응용 프로그램에 'HttpContext.Current.Application'을 사용하고 공용 응용 프로그램에 전역 변수를 사용하여 공통 코드를 유지할 수 있도록 구현했습니다. – Kris

0

콘솔 응용 프로그램에서 HttpContext를 사용할 수 없습니다. @matrxRapture 언급 당신은 전역 변수를 사용하여이 문제를 해결할 수 있으며, 응용 프로그램의 현재 디렉토리 경로를 찾고 있다면 당신은 사용할 수 있습니다 Assembly.GetExecutingAssembly(). 위치 당신의 응답을

관련 문제