I’ve been working on a MBAM 2.5 installation and when attempting to install the Reporting feature on the SQL Server I received the following error ‘Unable to connect to the Reporting Services web server. Error message: The underlying connection was closed: An unexpected error occurred on a send.’

mbamreport-001

The SQL Reporting configuration had been run and the web page for the Report Server was accessible.

The event logs for MBAM reported the following:

Report provider unexpected error.

Description:
A web error occurred while checking the SSRS URL.

Exception:
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. —> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. —> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
— End of inner exception stack trace —
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)
— End of inner exception stack trace —
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.SqlServer.ReportingServices.ReportService2005.ReportingService2005.GetPermissions(String Item)
at Microsoft.Mbam.Setup.Common.Reports.ReportsPrerequisitesManager.GetWebServiceUrlForInstance(String instanceName)

and

Report provider unexpected error.

Description:
Reporting Services connectivity failed.

Exception:
Microsoft.Mbam.Setup.Common.PrereqCheckException: Unable to connect to the Reporting Services web service. Error message: The underlying connection was closed: An unexpected error occurred on a send. —> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. —> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. —> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
— End of inner exception stack trace —
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.ConnectStream.WriteHeaders(Boolean async)
— End of inner exception stack trace —
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.SqlServer.ReportingServices.ReportService2005.ReportingService2005.GetPermissions(String Item)
at Microsoft.Mbam.Setup.Common.Reports.ReportsPrerequisitesManager.GetWebServiceUrlForInstance(String instanceName)
— End of inner exception stack trace —
at Microsoft.Mbam.Setup.Common.Reports.ReportsPrerequisitesManager.GetWebServiceUrlForInstance(String instanceName)
at Microsoft.Mbam.Setup.Common.Reports.ReportsPrerequisitesManager.CreateInstance(ReportsConfiguration configuration)
at Microsoft.Mbam.Setup.Common.Reports.ReportsFeatureProvider.CheckPrereqs(IProgress`1 progress, CancellationToken cancellationToken, ReportsConfiguration configuration)

The answer to this particular problem was located in the rsreportserver.config file located in the C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer folder.

During the configuration of the reporting services I had change from port 80 configuration to port 443 and then back again on numerous occasions. It seems that reporting services hadn’t clean up some of the obsolete references and three URLs existed for the ReportServerWebService under the <URLReservations> section.

Before editing I made a backup of the rsreportserver.config and then removed the obsolete references, leaving in the port 80 site which was configured in the Reporting Services Configuration Manager. For example:

 <Application>
 <Name>ReportServerWebService</Name>
 <VirtualDirectory>ReportServer</VirtualDirectory>
 <URLs>
 <URL>
 <UrlString>http://+:80</UrlString>
 <AccountSid>S-1-5-80-2885764129-887777008-271615777-1616004480-2722851051</AccountSid>
 <AccountName>NT Service\ReportServer</AccountName>
 </URL>
 </URLs>
 </Application>

After saving the amended file I was then able to continue the installation of the MBAM reports feature.

Advertisements