.net – Is it possible to use custom host headers / bindings with IIS7 Express

iis-expressnetvisual studio 2010

I'm trying to configure a new ASP.NET MVC3 using IIS7 express (on my local development machine) to use a custom domain name.

eg.

  1. my local dev machine.
  2. kick open my web browser
  3. goto http://dev.www.mydomain.com
  4. my visual studio mvc project kicks in

I've hacked my hosts file to include (yes, i saved the file .. which also meant i had to have admin rights enabled …

127.0.0.1 dev.www.mydomain.com

I just can't figure out how to use IIS7 express to get configured to do this.

I went to MVC Project => Properties => Web and did the following :-
enter image description here

Then tried to run the site…
enter image description here

Can anyone help?

Best Answer

  1. Stop currently running site if it is running

  2. Open %userprofile%\documents\iisexpress\config\applicationhost.config
    for VS2015+ :$(solutionDir)\.vs\config\applicationhost.config

  3. Locate the site you are interested in and it would have a binding like

    <binding protocol="http" bindingInformation="*:<your-port-number>:localhost" />

  4. Now add a similar entry <binding protocol="http" bindingInformation="*:<your-port>:dev.www.mydomain.com" /> just below the above bindig entry.

  5. run the site again

NOTE: You must start visual studio as administrator because non-localhost binding requires administrator privileges


Update By Pure Krome:

Further to this, we need to do the following. These comments are in the top of my web.config (along with a few other stuff...).

1) netsh http add urlacl url=http://localhost.www.foo.com:80/ user=everyone
   netsh http add urlacl url=http://localhost.foo.com:80/ user=everyone
   netsh http add urlacl url=http://localhost.foobar.com.au:80/ user=everyone
   netsh http add urlacl url=http://localhost.pewpew.com:80/ user=everyone
   ... etc ... 
   NOTE: to remove a urlacl: netsh http delete urlacl url=<url in here> .. eg http://foo.com:80

2) ... and we need to edit the main IIS7 express config file to define the url's which will be accepted, per web -site-
    File: C:\Users\<UserName>\Documents\IISExpress\config\applicationhost.config
<bindings>
    <binding protocol="http" bindingInformation="*:1200:localhost" />
    <binding protocol="http" bindingInformation="*:80:localhost.www.foo.com" />
    <binding protocol="http" bindingInformation="*:80:localhost.foo.com" />
    <binding protocol="http" bindingInformation="*:80:localhost.foobar.com.au" />
    <binding protocol="http" bindingInformation="*:80:localhost.pewpew.com" />
</bindings>
Related Topic