我有3个IIS7虚拟目录,指向同一个物理目录。每个都有一个绑定到它的唯一主机头,每个头都在自己的应用程序池中运行。最终,同一个ASP.NET应用程序的3个实例。
在global.asax的Application_Start事件处理程序中,我想确定正在运行的应用程序的哪个实例(有条件地执行某些代码)。由于Request对象不可用,我无法询问当前的URL,所以我想查询当前虚拟目录的绑定信息?
由于主机头绑定对于每个站点都是唯一的,因此它允许我识别正在启动的应用程序实例。有谁知道怎么做或有更好的建议?
答案 0 :(得分:1)
当发出请求时,就在创建HttpApplication
实例之前,ASP.NET会初始化核心对象,例如HttpContext
,HttpRequest
和HttpResponse
,这意味着当您到达Application_Start
中的Global.asax
事件时,它们就会存在。因此,在Application_Start
中,您可以像这样获取请求网址:
var url = this.Context.Request.Url;