Visual Studio 2015 / IISExpress change SSL port

r3plica picture r3plica · Sep 29, 2015 · Viewed 28.6k times · Source

I have 2 projects, a Web API and a client angularJS project (that was created using the Empty Project template). My client has asked me to force SSL, so for the Web API I created a filterAttribute. Anyway, I changed both projects to be SSL Enabled. The problem is, both projects show their SSL URL to be http://localhost:44300 which obviously won't work.

So I decided to change the applicationhost.config file. For Visual Studio 2015, this appears to be in the .vs folder. When I change it in there, if I open my project it overwrites it and puts it back to 44300.

I tried creating a virtual directory (in the properties of my API) and I tried to override the application root URL. Neither worked.

Does anyone know how I can use a different SSL port?

Answer

Greg Terrell picture Greg Terrell · Nov 23, 2015

I had the same situation with 2 projects. Visual Studio 2015 correctly assigned differing URL port numbers for HTTP but mapped both projects to 44300 for HTTPS.

AFAIK the applicationhost.config in .vs\config seems to define the IIS Express environment and tell IIS Express how to behave when invoked. This information doesn't feedback into Visual Studio.

Visual Studio appears to rely on settings in the .csproj file. This is the SSL port value you see when you look at properties for the project in VS.

I was able untangle the two projects by adjusting both:

  1. Changing the IISExpressSSLPort value in my project's .csproj file
  2. I also needed to ensure that the https binding was included in the applicationhost.config

.csproj

<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort>44301</IISExpressSSLPort>

applicationhost.config

<bindings>
   <binding protocol="http" bindingInformation="*:58001:localhost" />
   <binding protocol="https" bindingInformation="*:44301:localhost" />
</bindings>

Update:

The file .csproj.user also has SSL Port configuration, to avoid the overwriting of the SSL port number in the applicationhost.config file, .csproj.user should be updated too.

<UseIISExpress>true</UseIISExpress>
<IISExpressSSLPort>44301</IISExpressSSLPort>