how to find the website root physical path

  • Thread starter Thread starter AAaron123
  • Start date Start date
A

AAaron123

I've been playing around with physical paths.

I need to know how to find the website root physical path.

I tried various things and find I can get the path to my Projects folder, to
the folder the current page is in various other things but I'm never sure
any one thing will work in all cases.

Suppose this is the site

webSiteFolder
Default.aspx
subFolder1
page1.aspx
subFolder2
page2.aspx

Suppose the site is first entered by specifying /subFolder/page1.aspx rather
than /Default.aspx as it usually done (maybe this is not relevant).

Then, in a .vb file, no matter which page I'm in

How do I find the directory path to Default.aspx?
That is, to the web root folder.

If I'm in page2 how would you specify page1.aspx?

What is the difference between the Application folder and the web root
folder?
I think I know what the web root is but what is the Application root?


Thanks in advance if you wade through the above and answer some of it!

PS
I find the web root now by searching upward until I find Default.aspx.
Kludgy?
 
There's no need to know the physical path, nor should you use it even if you
knew it. You should ALWAYS be using relative paths within your site.

You can always specify the root of the site by simply adding a forward-slash
(/) to any relative reference.

So, to get to your default page, you would simply need a path of
"/default.aspx".

If you were on page2 and needed a reference to page1, you'd do it relatively
by indicating you need to go up one directory (to the parent folder of
subfolder2) by using "../" and then indicating that you need to go into
subfolder1 and finally page1: "../subfolder1/page1.aspx"

The reason you don't want to use physcial paths is that they can change over
time and between development and production servers. Relative paths should
stay consistent.

-Scott
 
What is the difference between the Application folder and the web root
folder?
    I think I know what the web root is but what is the Application root?

Web (domain) root is a folder that corresponds to domain of the
website created in IIS. Example: by default IIS has a sample website
in the C:\Inetpub\wwwroot folder. This folder is a web root of http://localhost

Application root is a folder that corresponds to URL of application.
Typically, it the same as web domain root, but if you have http://localhost/app1,
http://localhost/app2 then your application root is location of the
path to ASP.NET application (e.g. c:\inetpub\wwwroot
\VirtualDirectory1). The application root usually contains some
specific files: web.config, bin-folder, etc.
 
I need to pass the physical path to SQLServer 2008 to create a database in a
specified folder.

It works OK if I use the long newFolder string I show below.

But not if I add the newFolder = "/" statement.

Can you figure a way to do that?



Dim newFolder As String = "I:\My Documents\Visual Studio
2008\WebSites\MySite\App_Data\"

newFolder = "/"


Thanks
 
Thanks for your extensive comments below.
I'm not confident I really understand so I wrote some stuff below hoping
you'll indicate agreement or disagreement.
I know it's really too much to expect you to wade through but I can hope!

If I open IIS on my machine and expand I see:
My machine name(local computer)
Web Sites
Default Web Site
many folder names including the what is my application root if I
understand your note below (because it contains web.config, bin-folder,
etc.)
Properties show the path to be
I:\My Documents\Visual Studio 2008\WebSites\MySite
so this isthe application folder for my site


I used IE to open http://localhost
and got to
http://localhost/localstart.asp
I find that file in
C:\Inetpub\wwwroot

So is C:\Inetpub\wwwroot a web root folder
Is there an Application frolder that goes with this?

When I run my site I see
http://localhost:1350/MySite/Default.aspx
so is /MySite my web root folder

In this case the web and root folder are the same.
But they need not be?

If they are not how can I get vb to give me the string
I:\My Documents\Visual Studio 2008\WebSites\MySite\App_Data

Thanks a lot



What is the difference between the Application folder and the web root
folder?
I think I know what the web root is but what is the Application root?

Web (domain) root is a folder that corresponds to domain of the
website created in IIS. Example: by default IIS has a sample website
in the C:\Inetpub\wwwroot folder. This folder is a web root of
http://localhost

Application root is a folder that corresponds to URL of application.
Typically, it the same as web domain root, but if you have
http://localhost/app1,
http://localhost/app2 then your application root is location of the
path to ASP.NET application (e.g. c:\inetpub\wwwroot
\VirtualDirectory1). The application root usually contains some
specific files: web.config, bin-folder, etc.
 
The easiest way to find the website root application's
physical path is with Server.MapPath(Request.ApplicationPath).

Server.MapPath(Request.ApplicationPath) gives you the string you need to pass the
application's physical path to SQLServer 2008 to create a database in a specified folder.




Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
=========================
 
Thanks for your extensive comments below.
I'm not confident I really understand so I wrote some stuff below hoping
you'll indicate agreement or disagreement.
I know it's really too much to expect you to wade through but I can hope!

If I open IIS on my machine and expand I see:
My machine name(local computer)
    Web Sites
        Default Web Site
            many folder names including the what is my application root if I
understand your note below (because it contains web.config, bin-folder,
etc.)
Properties show the path to be
I:\My Documents\Visual Studio 2008\WebSites\MySite
so this isthe application folder for my site

I used IE to openhttp://localhost
and got tohttp://localhost/localstart.asp
I find that file in
C:\Inetpub\wwwroot

So is C:\Inetpub\wwwroot a web root folder
Is there an Application frolder that goes with this?

When I run my site I seehttp://localhost:1350/MySite/Default.aspx
so is /MySite my web root folder

In this case the web and root folder are the same.
But they need not be?

If they are not how can I get vb to give me the string
I:\My Documents\Visual Studio 2008\WebSites\MySite\App_Data

Aaron,

In your example,

C:\Inetpub\wwwroot is the web (domain) root folder pointed to http://localhost
I:\My Documents\Visual Studio 2008\WebSites\MySite is the application
root of http://localhost:1350/MySite/

The port number of 1350 tells me that you are using ASP.NET
development server from VS.NET, and this is maybe why you were
confused by difference in localhost vs. localhost:1350. To make this
more clear you just need to know following thing: a typical web
application is a set of web pages (web forms), other files and
directories, linked to each other. A website could have one or more
web applications. Go to IIS, open a website properties, go to Home
Directory tab. You will see an area with Application settings.
Navigate to a any subdirectory in your website in IIS, again open
Properties - Directory. You will see again Application settings. If
settings are grayed out, subdirectory is a part of the parent
application. Once you clicked Create you will mark that directory as a
new web application.

To get I:\My Documents\Visual Studio 2008\WebSites\MySite\App_Data use

Server.MapPath("~/App_Data")
 
Thanks
Juan T. Llibre said:
The easiest way to find the website root application's
physical path is with Server.MapPath(Request.ApplicationPath).

Server.MapPath(Request.ApplicationPath) gives you the string you need to
pass the
application's physical path to SQLServer 2008 to create a database in a
specified folder.




Juan T. Llibre, asp.net MVP
asp.net faq : http://asp.net.do/faq/
=========================
 
That great!

Thanks a lot.

Thanks for your extensive comments below.
I'm not confident I really understand so I wrote some stuff below hoping
you'll indicate agreement or disagreement.
I know it's really too much to expect you to wade through but I can hope!

If I open IIS on my machine and expand I see:
My machine name(local computer)
Web Sites
Default Web Site
many folder names including the what is my application root if I
understand your note below (because it contains web.config, bin-folder,
etc.)
Properties show the path to be
I:\My Documents\Visual Studio 2008\WebSites\MySite
so this isthe application folder for my site

I used IE to openhttp://localhost
and got tohttp://localhost/localstart.asp
I find that file in
C:\Inetpub\wwwroot

So is C:\Inetpub\wwwroot a web root folder
Is there an Application frolder that goes with this?

When I run my site I seehttp://localhost:1350/MySite/Default.aspx
so is /MySite my web root folder

In this case the web and root folder are the same.
But they need not be?

If they are not how can I get vb to give me the string
I:\My Documents\Visual Studio 2008\WebSites\MySite\App_Data

Aaron,

In your example,

C:\Inetpub\wwwroot is the web (domain) root folder pointed to
http://localhost
I:\My Documents\Visual Studio 2008\WebSites\MySite is the application
root of http://localhost:1350/MySite/

The port number of 1350 tells me that you are using ASP.NET
development server from VS.NET, and this is maybe why you were
confused by difference in localhost vs. localhost:1350. To make this
more clear you just need to know following thing: a typical web
application is a set of web pages (web forms), other files and
directories, linked to each other. A website could have one or more
web applications. Go to IIS, open a website properties, go to Home
Directory tab. You will see an area with Application settings.
Navigate to a any subdirectory in your website in IIS, again open
Properties - Directory. You will see again Application settings. If
settings are grayed out, subdirectory is a part of the parent
application. Once you clicked Create you will mark that directory as a
new web application.

To get I:\My Documents\Visual Studio 2008\WebSites\MySite\App_Data use

Server.MapPath("~/App_Data")
 
Back
Top