没有Request对象的Base Url

时间:2014-08-21 13:08:30

标签: asp.net-mvc iis-8

根据我的代码,我需要在应用程序启动时进行一些缓存,这需要时间。所以我想到了使用IIS“预加载”功能。我读到它,以防万一 - IIS向网站发出虚假请求。

现在,我有两个混淆:

  1. 确实,当IIS重新启动时,我的应用程序在global.ascx - protected void Application_Start()中收到应用程序启动事件,但我没有Request对象(它为null)。我需要我的应用程序的基本URL来处理某些东西,任何帮助我如何在没有Request对象的情况下拥有它
  2. 为什么Request对象为空?如果IIs正在提出假请求..

2 个答案:

答案 0 :(得分:0)

是的,这是正确的,Request对象在那里不可用,因为它不是请求的一部分,只有应用程序启动,如果应用程序尚未启动则会自动触发并检测到请求。

还有另一种方法,void Application_BeginRequest(Object sender, EventArgs e)可能就是你要找的东西。这当然是针对每个请求运行的,但是我确信你可以设置一些条件,无论你想做什么只运行一次。

请注意,并非所有内容都可用,因此您还可以试用另一种方法protected void Application_AcquireRequestState()

答案 1 :(得分:-1)

您可以尝试使用:

System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();

与请求无关。