Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to use custom host headers / bindings with IIS7 Express?

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?

like image 632
Pure.Krome Avatar asked Mar 17 '11 11:03

Pure.Krome


People also ask

Does IIS Express use web config?

Yes, IIS Express uses the same applicationhost. config and web. config files supported by IIS.

How do I host a header in IIS?

Setting Up Host Headers in IIS 7 Using the Command LineInstall the SSL Certificate to the site where you will use secure bindings. Next, open a command line by clicking Start > Run. Type cmd and click OK. Type cd C:\Windows\System32\Inetsrv\ to change the directory where you manage SSL host headers and click enter.

What is host header in URL?

The Host request header specifies the host and port number of the server to which the request is being sent. If no port is included, the default port for the service requested is implied (e.g., 443 for an HTTPS URL, and 80 for an HTTP URL). A Host header field must be sent in all HTTP/1.1 request messages.


1 Answers

  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>
like image 117
vikomall Avatar answered Sep 27 '22 22:09

vikomall