47

I have a local application which has a path:

http://localhost:950/m/pages/Searchresults.aspx?search=knife&filter=kitchen

but when this goes to integration environment or perhaps the production, it will be something like

http://www.someshopping.com/m/pages/SearchResults.aspx?search=knife&filter=kitchen

For some cases I need to pass just:

www.someshopping.com

to my XSLT file and in one of the function I'm using this:

string currentURL = HttpContext.Current.Request.Url.Host;

this returns me "localhost" in local environment. Will the same code return me:

www.someshopping.com in production (I DO NOT need http://)

just don't want to take any chance. So asked this silly question.

Amin Sayed
  • 1,240
  • 2
  • 13
  • 26

3 Answers3

58

Yes, as long as the url you type into the browser www.someshopping.com and you aren't using url rewriting then

string currentURL = HttpContext.Current.Request.Url.Host;

will return www.someshopping.com

Note the difference between a local debugging environment and a production environment

edhurtig
  • 2,331
  • 1
  • 25
  • 26
  • 1
    It returns 'HOSTNAME' header or local address if the header is not present. See sources for details: https://referencesource.microsoft.com/#System.Web/HttpRequest.cs,36cdd1ccad69cf75 – Alex Nov 14 '17 at 22:35
19

The Host property will return the domain name you used when accessing the site. So, in your development environment, since you're requesting

http://localhost:950/m/pages/Searchresults.aspx?search=knife&filter=kitchen

It's returning localhost. You can break apart your URL like so:

Protocol: http
Host: localhost
Port: 950
PathAndQuery: /m/pages/SearchResults.aspx?search=knight&filter=kitchen
Tejs
  • 40,736
  • 10
  • 68
  • 86
10

Try this:

string callbackurl = Request.Url.Host != "localhost" 
    ? Request.Url.Host : Request.Url.Authority;

This will work for local as well as production environment. Because the local uses url with port no that is possible using Url.Host.

spenibus
  • 4,339
  • 11
  • 26
  • 35
Mahesh
  • 157
  • 2
  • 8
  • 15
    you should always use `Request.IsLocal` to check if it's a local request, no need to compare the `Request.Url.Host` as that's false if I actually write `http://LocalHost/...` – balexandre Oct 30 '15 at 08:21