Monday, October 6, 2014

Different values of SPSite.URL and SPWeb.URL 

------------------------------------------------------------------------------------------------------------
There are some properties for SPSite and SPWeb class using which we can get the URL values for the sites and webs. The two most used of these properties are - 'ServerRelativeUrl' and 'Url'
As a developer we use the values of the properties for writing some logic for satifying the business needs. Whenever I used to write a OM code to use these properties, the first question which flashes in my mind - "What values are returned by these properties?". I immediately create a cosole application, and check the values returned by these properties and contiue with the actual work. I have seen many other developers doing this. So, for a quick reference I prepared the below table which has the url values returned by these properties.
Some poeple may find this easy, but some (like me ;)) get confused when the sites have managed paths. These properties return the managed path if the site has one. Here goes the list
SCENARIO 1: A Site Collection (SPSite) without any managed path.
URL : 'http://rams'
PropertyValue
SPSite.ServerRelativeUrl/
SPSite.Urlhttp://rams
SPWeb.ServerRelativeUrl/
SPWeb.Urlhttp://rams
Url - http://rams/about ('about' is a sub site)
SPSite.ServerRelativeUrl/
SPSite.Urlhttp://rams
SPWeb.ServerRelativeUrl/about
SPWeb.Urlhttp://rams/about
This looks pretty simple. We get confused when sites are created using managed paths. Below are the samples values for site created with managed paths
SCENARIO 2: A Site Collection with a managed path (of type Explict inclusion). For the below URL '/my' is the managed path
URL : 'http://rams/my'
PropertyValue
SPSite.ServerRelativeUrl/my
SPSite.Urlhttp://rams/my
SPWeb.ServerRelativeUrl/my
SPWeb.Urlhttp://rams/my
Url - http://rams/my/about ('about' is a sub site)
SPSite.ServerRelativeUrl/my
SPSite.Urlhttp://rams/my
SPWeb.ServerRelativeUrl/my/about
SPWeb.Urlhttp://rams/my/about

SCENARIO 3: A Site Collection with a managed path (of type Wilcard inclusion). For the below URL '/sites' is the managed path, and a site collection is created at '/blog'
URL : 'http://rams/sites/blog'
PropertyValue
SPSite.ServerRelativeUrl/sites/blog
SPSite.Urlhttp://rams/sites/blog
SPWeb.ServerRelativeUrl/sites/blog
SPWeb.Urlhttp://rams/sites/blog
Url - http://rams/sites/blog/about ('about' is a sub site)
SPSite.ServerRelativeUrl/sites/blog
SPSite.Urlhttp://rams/sites/blog
SPWeb.ServerRelativeUrl/sites/blog/about
SPWeb.Urlhttp://rams/sites/blog/about

No comments:

Post a Comment