I have an application page, added to a site collection. I open the page by the url: http://servername/sitecollection/_layout/sc/page.aspx

I have added some links, which should open the SAME Url with an additional query string. But it doesn't work. I've tried alot of methods, but all the links routes me to http://servername/_layout/sc/page.aspx.

So how can I programmaticly find the right url?

I've tried Http.Context, Request and so on, but one works. :\

So does anyone have an Idea?

Best Regards


PS: My system is SP2010 Standard Edition Service Pack 2.


Here are some of the Methods I have tried:

return SPContext.Current.Site.MakeFullUrl(SPContext.Current.Web.ServerRelativeUrl);

return SPContext.Current.Site.MakeFullUrl(SPContext.Current.Web.ServerRelativeUrl);

return HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path);

return SPContext.Current.File.Url;

return "http://" + Request.ServerVariables["SERVER_NAME"] + Request.ServerVariables["URL"];

I prefer to use following:


First one for site collection relative url and the other one for site relative url.

  • Good point - this is much 'nicer'... – Bernd Rickenberg Dec 24 '11 at 13:04

You can simply use:


If you need the context of the current site in the application page, use:

SPContext.Current.Web.Url + "/_layout/sc/page.aspx"
  • Hey, ok that was easy... thought about an automatic solution but it hasn't worked. So your solution fits my problem. Thank you very much! Marry Christmas! – Smokefoot Dec 23 '11 at 14:02
  • Hope it does not throw an error when SPContext.Current.Web.Url results in "/". – Ashish Patel Dec 23 '11 at 15:07
  • no it doesn't. It fits the problem very well. – Smokefoot Dec 28 '11 at 15:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.