Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I access virtual directory name in global.asax.cs?

The property HttpContext.Current.Request.ApplicationPath represents the virtual directory in IIS or WebDev.WebServer.

 HttpContext.Current.Request.ApplicationPath evaluates to "/virtualdirectory"

This can be used in conjunction with VirtualPathUtility to make a path root relative :

 VirtualPathUtility.ToAbsolute("~/images/cat.jpg",
                               HttpContext.Current.Request.ApplicationPath)

 // (this evaluates to "/virtualdirectory/images/cat.jpg")

In IIS6 and WebDev.WebServer the Request object is available in global.asax.cs, but IIS7 complains that it is 'not available in current context'. Therefore the second line of code above works but not in IIS7.

The problem is I need to access the virtual directroy name within global.asax.cs. I need it to construct some paths that are used in dynamically created CSS. Is there an alternative way to access this value?

Edit: This is the error you get in IIS 7 for calling HttpContext.Current.Request in global.asax.cs under Application_Start:

 HttpException (0x80004005): Request is not available in this context]
    System.Web.HttpContext.get_Request() +8789264
like image 397
Simon_Weaver Avatar asked Apr 28 '09 20:04

Simon_Weaver


1 Answers

Finally found the simple answer!

 HttpRuntime.AppDomainAppVirtualPath

Available immediately during Application_Start

This is of the form /myapplication including the / prefix.

like image 117
Simon_Weaver Avatar answered Sep 23 '22 02:09

Simon_Weaver