2011-11-01 3 views
0

사용자가 매번 웹 서버의 정적 컨텐츠에 액세스 할 때이를 모니터링하여 매번 사용자 잔액을 차변으로 처리하는 MVC3 응용 프로그램을 개발했습니다. 이 논리는 Global.asax의 "Application_AuthenticateRequest"이벤트에서 발생합니다 (이전에이 로직을 배치 한 올바른 위치를 읽었습니다).Global.asax에서 MvcMailer 사용

MvcMailer는 다양한 알림 (생성 된 계정, 재설정 된 비밀번호 등)을 사용자에게 보내도록 구현되었습니다. 우리는 "낮은 균형"알림을 구현하고 싶지만 완전한 HttpContext를 사용할 수 없기 때문에 "Application_AuthenticateRequest"에서 하나를 보낼 수있는 것 같지 않습니다 ...? "PopulateBody"호출시 나타나는 전체 오류는 다음과 같습니다.

ArgumentNullException was unhandled by user code. 
Value cannot be null. 
Parameter name: routeData 

제안 사항이 문제를 해결하려면 어떻게해야합니까? Global.asax에서 다른 이벤트에서 알림을 보내는 것에 대해 생각하고 있었지만 정적 콘텐츠에 대해서는 발사해야합니다 ...?

미리 감사드립니다.

답변

1

Application_EndRequest에서 해당 요청을 읽거나 (대신 해당 요청을 확인하고) 요청을 보낼 수 있습니다. 더 나은 것은 단순히 캐시에 저장하고 Application_EndRequest에서 찾거나 Count가 충분히 높은 경우 EndRequest에 대한 전체 결정을 내리십시오.

+0

제안 해 주셔서 감사합니다. 전체 호출을 Application_EndRequest로 이동했지만 "PopulateBody"가 호출 될 때 여전히 동일한 오류가 발생합니다. 참고 스택 포인터가있는 위치 : System.Web.dll! System.Web.Routing.RequestContext.RequestContext (System.Web.HttpContextBase httpContext, System.Web.Routing.RouteData routeData) –

+0

좋습니다 기본적으로 게임이 될거야 application_beginrequest보십시오 이 문제가 약간 다른 상황에서 아무런 해결책도없이보고 된 이후로 올바른 방법을 찾으십시오. –

+0

나는 같은 문제를 겪고있다. 나는 제안 된 대답을 정말로 이해하지 못한다. 절대로 _EndRequest 등을 들어 보지 못했습니다. 예제 코드가 있습니까? – mosquito87

관련 문제