The following are several methods to obtain absolute paths.
VirtualPathUtility. ToAbsolute ("~ /") HttpRuntime. AppDomainAppVirtualPath Request. ApplicationPath Page. ResolveUrl ("~ ") |
The result of the above Code is as follows:
When accessing a website, the result is as follows:
VirtualPathUtility. ToAbsolute ("~ /") =/
HttpRuntime. AppDomainAppVirtualPath =/
Request. ApplicationPath =/
Page. ResolveUrl ("~ ") =/
When you use a virtual directory (http: // localhost: 806/web2/url. aspx), the result is as follows:
VirtualPathUtility. ToAbsolute ("~ /") =/Web2/
HttpRuntime. AppDomainAppVirtualPath =/web2
Request. ApplicationPath =/web2
Page. ResolveUrl ("~ ") =/Web2/
The second and third methods also need to be processed, because the Website access ends with a slash (/), but the access to a virtual directory does not contain a slash (/), and a judgment is required, A little effort.
However, there is no problem in using these methods on the page, but if you need to obtain the absolute path of the website in the Global Application_Start event, you need to use the first two methods, if the third method is used, the following error is reported:
Request is not available in this context
Therefore, you can only use the first two methods. For example
Void Application_Start (object sender, EventArgs e) { System. IO. StreamWriter s = new System. IO. StreamWriter (HttpRuntime. AppDomainAppPath + "log.txt "); S. WriteLine (VirtualPathUtility. ToAbsolute ("~ /")); S. WriteLine (HttpRuntime. AppDomainAppVirtualPath ); S. Close (); } |