SharePoint, Office 365, Azure, and Front end JS geek. – Chicago IL
SharePoint, Office 365, Azure, and Front end JS geek. – Chicago IL

IIS

VIDEO – PowerShell automated WebDeploy ZIP install

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.

Cheers! 

shades_smile

Video

Code

Add-PSSnapin WDeploySnapin3.0
$package = "C:\temp\Hello\deploy\Hello.zip"
Restore-WDPackage $package -Parameters @{"IIS Web Application Name"="API/Hello"}

Screenshot

image

References

FIXED – Search Host Controller won’t start 1067 / 6482 HTTP endpoint

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! 

shades_smile

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.   

Cause

  • IIS Website is actively listening on TCP port 808
  • Search Host Controller requires this port and cannot start.

Resolution

  • Modify IIS Website to listen on a different port number.
  • Search Host Controller service will now start.

Screenshots

image
image
image
image
image
image
image
image

Error

Application Server Administration job failed for service instance Microsoft.Office.Server.Search.Administration.SearchServiceInstance (435e7b39-2949-4f35-ab03-2ad382f84d4f).

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 —

Server stack trace:
    at System.ServiceModel.Channels.FramingDecoder.ValidatePreambleAck(FramingRecordType foundType)
    at System.ServiceModel.Channels.ClientDuplexDecoder.Decode(Byte[] bytes, Int32 offset, Int32 size)
    at System.ServiceModel.Channels.ConnectionUpgradeHelper.ValidateUpgradeResponse(Byte[] buffer, Int32 count, ClientFramingDecoder decoder)
    at System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
    at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
    at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

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()

References

IIS 7.5 native SharePoint warm up (MUST SEE)

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. 

Hot

 

image

 

How to configure

  • Download x64 MSI from http://www.iis.net/download/ApplicationWarmUp
  • Login to Windows 2008 R2 as local admin and install
  • Open INETMGR and browse to the website that needs warm up
  • Open Application Warm-Up feature icon
  • Click Add Request and give the relative URL to the homepage ASPX (without / prefix)
  • Click Settings and check both boxes
  • 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).

IIS 7.5 native SharePoint warm up (MUST SEE) from Jeff Jones on Vimeo.

image
image
image
image
image

© Copyright 2016
@ SPJeff

Return to Top ▲Return to Top ▲