2012-06-29 45 views

回答

2

HttpContext.Current.Request是一个静态属性,它总是返回当前正在执行的会话的请求对象来完成。

我认为你需要一个自定义的解决方案来知道在应用程序启动后第一次请求的时间,然后你可以发送任何你想要的电子邮件。这是类似的问题在这里http://weblogs.asp.net/reganschroder/archive/2008/07/25/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-application-start.aspx这样做在BeginRequest事件。

+1

是的,但它在application_start – Ha11owed

+0

上不可用但是在应用程序启动时没有会话发起意味着没有请求。所以为什么你需要这里的网址,当没有人甚至要求一个单一的页面..你应该使用Session_start而不是application_start –

+0

我需要它在这里,因为一些操作,应该只做一次,在应用程序的开始包括日志)。另外我知道一个解决方案是只保存web.config中的字符串,但我认为应该有一个更好的方法来做到这一点。 – Ha11owed

1

可以有许多不同的地址指向同一个ASP.NET网站,例如使用IP地址或名称。可能有多个DNS名称指向相同的ASP.NET应用程序。因此,Global的父类HttpApplication不知道访问者将使用哪个URL。即使IIS不知道。因此,您必须等待第一个请求,然后检查请求访问者访问您的网站时使用的URL。事情是这样的:

string baseUrl = Context.Request.Url.GetLeftPart(UriPartial.Authority); 

一要利用上下文来获取访问Global.Application_Start期间的请求,因为Global.Request尚未初始化。