ASP.NET / SSAS / SQL Server - An existing connection was forcibly closed by the remote host

CallumVass picture CallumVass · Oct 21, 2011 · Viewed 9.9k times · Source

Possible Duplicate:
Can I turn off impersonation just in a couple instances

I've created an application that, when uploaded to my server throws an exception. It works fine locally but the moment I upload it to my server I get the following error:

System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host

Here is my connection string:

AdomdConnection conn = new AdomdConnection("Data Source=BTN-SQL1;Initial Catalog=BTNTurboAnalysisServices;");

Its worth noting that BTN-SQL1 is on a different server to my web server, could that be causing a problem? I'm also using Windows Authentication.

Below is my stack trace:

[SocketException (0x2746): An existing connection was forcibly closed by the remote host]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +245

[IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +7856541
   System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count) +253
   Microsoft.AnalysisServices.AdomdClient.DimeRecord.ForceRead(Stream stream, Byte[] buffer, Int32 length) +61
   Microsoft.AnalysisServices.AdomdClient.DimeRecord.ReadHeader() +53
   Microsoft.AnalysisServices.AdomdClient.DimeReader.ReadRecord() +112
   Microsoft.AnalysisServices.AdomdClient.TcpStream.GetResponseDataType() +120

[AdomdConnectionException: The connection either timed out or was lost.]
   Microsoft.AnalysisServices.AdomdClient.XmlaClient.EndRequest() +1367
   Microsoft.AnalysisServices.AdomdClient.XmlaClient.CreateSession(ListDictionary properties, Boolean sendNamespaceCompatibility) +387
   Microsoft.AnalysisServices.AdomdClient.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.AdomdConnection.IXmlaClientProviderEx.CreateSession(Boolean sendNamespaceCompatibility) +148
   Microsoft.AnalysisServices.AdomdClient.AdomdConnection.ConnectToXMLA(Boolean createSession, Boolean isHTTP) +235
   Microsoft.AnalysisServices.AdomdClient.AdomdConnection.Open() +973
   btn_intranet.Areas.Sales.Controllers.HomeController.CumulativeChart(String month, String year) in <path to file>/HomeController.cs:52
   lambda_method(Closure , ControllerBase , Object[] ) +182
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +129
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +798650
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +314
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +798704
   System.Web.Mvc.Controller.ExecuteCore() +159
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +335
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +54
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

Any help would be appreciated, thanks!

Answer

Meff picture Meff · Oct 21, 2011

It looks like you're accessing via MVC, so does your IIS application pool identity have permissions to access the SSAS instance? You may need to create a windows (Ideally domain) account, and get the application pool to run under that, giving it permissions to access SSAS.