IIS

This video will demonstrate how to test, build, publish, and install WebDeploy ZIP packages. The example walks through a simple WebAPI HTTP endpoint which echoes back the current date and time. Fiddler is leveraged for HTTP testing. Once tested succesful, we publish the project to ZIP for install on IIS hosted infrastructure.

PowerShell cmdlet Restore-WDPackage is used to extract ZIP content and create a permanent home for the API endpoint.

By automating with PowerShell we provide a fast consistent admin experience to ensure the API is always installed the same way for a reliable repeatable procedure. Thanks for watching.

There are many common causes for Search Host Controller stuck on starting (won’t start). I have a new cause to add to the community body of knowledge. TCP port 808 being used by another process can cause SharePoint 2016 Search Host Controller Windows Service to fail to start. Strange cause, I know. Maybe this post helps another SP admin avoid hours of endless troubleshooting.

Cheers!

Symptom

Search Application Topology > Unable to retrieve topology component health states. This may be because the admin component is not up and running.

Windows Services > Error 1067: The process terminated unexpectedly.

EventLog > You have tried to create a channel to a service that does not support .Net Framing. It is possible that you are encountering an HTTP endpoint.

ULS > Unexpected

WcfService: Got CommunicationException out when trying to open the HostController servicehost. Shutting down process. – threadId: 14 – exception: System.ServiceModel.AddressAlreadyInUseException: The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the service failed to listen.

Screenshots

Error

Reason: You have tried to create a channel to a service that does not support .Net Framing. It is possible that you are encountering an HTTP endpoint.

Technical Support Details: System.ServiceModel.ProtocolException: You have tried to create a channel to a service that does not support .Net Framing. It is possible that you are encountering an HTTP endpoint. —> System.IO.InvalidDataException: Expected record type ‘PreambleAck’, found ’72’. — End of inner exception stack trace —

Exception rethrown at [0]: at Microsoft.Office.Server.Search.Administration.SearchServiceInstance.Synchronize() at Microsoft.Office.Server.Administration.ApplicationServerJob.ProvisionLocalSharedServiceInstances(Boolean isAdministrationServiceJob)

WcfService: Got CommunicationException out when trying to open the HostController servicehost. Shutting down process. – threadId: 14 – exception: System.ServiceModel.AddressAlreadyInUseException: The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the service failed to listen.

at System.ServiceModel.Channels.SharedConnectionListener.SharedListenerProxy.Register() at System.ServiceModel.Channels.SharedConnectionListener.SharedListenerProxy.Open(Boolean isReconnecting) at System.ServiceModel.Channels.SharedConnectionListener.StartListen(Boolean isReconnecting) at System.ServiceModel.Channels.SharedTcpTransportManager.OnOpenInternal(Int32 queueId, Guid token) at System.ServiceModel.Channels.SharedTcpTransportManager.OnOpen() at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener) at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback) at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.ConnectionOrientedTransportChannelListener.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at Microsoft.Ceres.HostController.WcfServer.WcfService.StartServiceEndpoint()

This one feature could be reason enough to upgrade to Windows Server 2008 R2 and IIS 7.5 when running SharePoint. The unique ability to warm up memory cache while still serving users is something no basic scripting can achieve. Please note: IISRESET seems to kill all workers and perform a classic flush followed by a warm up (brief outage). However, INETMGR “recycle” on a single pool triggers the warm up in parallel for a zero outage experience. Below is a diagram of my understanding of how this all works. It’s not from TechNet … but hey … my budding art skills need more practice.

Click Edit User Context, select “Set Username and Type only”, and provide Windows credentials. This doesn’t have to be the farm account, but that’s what I used for simplicity. Anyone with Read permission should work.

How to test

Open Internet Explorer to the homepage ASPX

Open CMD and Task Manager side-by-side

Type “IISRESET” and press enter

Type “APPCMD LIST WP” and press enter

Type “IISRESET” and press enter again

Refresh IE while watching Task Manager.

You’ll see a new PID (process identifier) number for the newly created W3WP worker process. The IE page should continue to load instantly without delay. By running “APPCMD LIST WP” again you will see a new PID for the application pool. The warm up feature has successfully created and warmed up a new worker thread without any outage. The only downside I can foresee is the need for more RAM. Running parallel W3WP threads requires more physical memory during the full process (recycle / warm up / release).