2011-11-01 58 views
0

开发了一个MVC3应用程序,用于监视用户何时访问Web服务器上的静态内容,每次都会记录用户的余额。这个逻辑发生在Global.asax的“Application_AuthenticateRequest”事件中(我之前读过这是放置这种逻辑的正确位置)。使用Global.asax的MvcMailer

MvcMailer已经实现向用户发送各种通知(帐户创建,重置密码等)。我们希望实现“低余额”通知,但似乎无法通过“Application_AuthenticateRequest”发送一个通知,因为没有完整的HttpContext可用。 “PopulateBody”被调用时出现的完整错误是:

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

任何建议如何解决此问题?正在考虑在Global.asax的其他活动中发送通知,但也需要为静态内容启动......?

在此先感谢!

回答

1

你可以在这个请求通过它来读取(或代替确定)在Application_EndRequest并从那里出来发送请求的情况下设置的东西。更重要的是,只需将其存储在缓存中,并寻找它在Application_EndRequest或作出EndRequest整个确定如果计数足够高,等

+0

感谢您的建议。将整个调用移至Application_EndRequest,但在调用“PopulateBody”时仍然出现相同的错误。 FYI堆栈指针是:System.Web.dll中System.Web.Routing.RequestContext.RequestContext(System.Web.HttpContextBase HttpContext的,System.Web.Routing.RouteData的RouteData) –

+0

好的尝试的Application_BeginRequest它基本上会是一个游戏找到正确的方法,因为这个问题似乎在轻微不同的背景下没有得到解决。 –

+0

我遇到同样的问题。我不太了解建议的答案。从来没有听说过_EndRequest等有没有任何示例代码? – mosquito87