Microsoft Exchange Server 2013 Transport Service Stuck on Starting

Problem

You’ve noticed that you are unable to access the Microsoft Exchange Admin Center (EAC) via the /ECP directory to manage Exchange:

Server Error in ‘/ecp’ Application.

Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Could not load file or assembly ‘Microsoft.Exchange.Clients.Strings, Version-15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.

Reviewing the services in the services console show that the Microsoft Exchange Transport service is stuck at Starting:

Attempting to launch the Management Shell will also fail:

Making an attempt to perform a recover server install of the will also fail during the Finalizing Setup step:

Performing Microsoft Exchange Server Prerequisite Check

Configuring Prerequisites COMPLETED

Prerequisite Analysis COMPLETED

Configuring Microsoft Exchange Server

Preparing Setup COMPLETED

Stopping Services COMPLETED

Copying Exchange Files COMPLETED

Language Files COMPLETED

Restoring Services COMPLETED

Language Configuration COMPLETED

Mailbox role: Transport service COMPLETED

Mailbox role: Client Access service COMPLETED

Mailbox role: Unified Messaging service COMPLETED

Mailbox role: Mailbox service COMPLETED

Exchange Management Tools COMPLETED

Client Access role: Client Access Front End service COMPLETED

Client Access role: Front End Transport service COMPLETED

Finalizing Setup FAILED

The following error was generated when “$error.Clear();

start-SetupService -ServiceName MSExchangeFrontendTransport

” was run: “Microsoft.Exchange.Configuration.Tasks.ServiceDidNotReachStatusExcep

tion: Service ‘MSExchangeFrontendTransport’ failed to reach status ‘Running’ on

this server.

at Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception

, ErrorCategory errorCategory, Object target, String helpUrl)

at Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception

, ErrorCategory category, Object target)

at Microsoft.Exchange.Management.Tasks.ManageSetupService.WaitForServiceStatu

s(ServiceController serviceController, ServiceControllerStatus status, Unlimited

`1 maximumWaitTime, Boolean ignoreFailures, Boolean sendWatsonReportForHungServi

ce)

at Microsoft.Exchange.Management.Tasks.ManageSetupService.StartService(Servic

eController serviceController, Boolean ignoreServiceStartTimeout, Boolean failIf

ServiceNotInstalled, Unlimited`1 maximumWaitTime, String[] serviceParameters)

at Microsoft.Exchange.Management.Tasks.ManageSetupService.StartService(String

serviceName, Boolean ignoreServiceStartTimeout, Boolean failIfServiceNotInstall

ed, Unlimited`1 maximumWaitTime, String[] serviceParameters)

at Microsoft.Exchange.Management.Tasks.StartSetupService.InternalProcessRecor

d()

at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()

at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String fun

cName, Action func, Boolean terminatePipelineIfFailed)”.

The Exchange Server setup operation didn’t complete. More details can be found

in ExchangeSetup.log located in the <SystemDrive>:ExchangeSetupLogs folder.

C:SP3 CU10>

Solution

This issue had me stumped for a while because there was no way to get into the management console or shell to review the configuration and determine how the receive and send connectors were configured and which one of them was causing the transport service to be stuck starting.  What I ended up being to find as a workaround for this issue was to download the following tool:

Exchange Management Console Troubleshooter
https://gallery.technet.microsoft.com/Exchange-Management-b9d918b1

Run the EMTshooter.ps1 PS script:

Run the following command to add the PowerShell snapin:

Add-PSsnapin Microsoft.Exchange.Management.PowerShell.E2010

Then use the Get-ReceiveConnector to review the receive connector configuration.  Having the ability to execute cmdlets allowed me to discover that one of the connectors (Allow Anonymous Relay) was mistakenly created as a HubTransport receive connector when it was supposed to be a FrontendTransport type causing the transport service to not be able to start:

Get-ReceiveConnector | where-object {$_.TransportRole -match “HubTransport”} | where-object {$_.Identity -like “SVR-MAIL-03*”}

Disabling the connector allowed with the cmdlet allowed the transport service to start and the EAC to be accessible again.