C# 为什么ADOMD.NET连接有时无法打开?

C# 为什么ADOMD.NET连接有时无法打开?,c#,connection,adomd.net,C#,Connection,Adomd.net,我已经创建了一个Web服务,它允许访问来自Microsoft Analysis Services多维数据集的数据。我想看看webservice将如何执行,所以我生成了简单的控制台应用程序,它生成了“x”线程,每个线程向webservice发出“y”请求 控制台应用程序: static int counter = 0; static void Main(string[] args) { WaitCallback callBack;

我已经创建了一个Web服务,它允许访问来自Microsoft Analysis Services多维数据集的数据。我想看看webservice将如何执行,所以我生成了简单的控制台应用程序,它生成了“x”线程,每个线程向webservice发出“y”请求

控制台应用程序:

 static int counter = 0;
        static void Main(string[] args)
        {
            WaitCallback callBack;

            callBack = new WaitCallback(RunAsync);
            for (var i = 0; i < 7; i++)
            {
                Console.WriteLine("openeed thread:" + i);
                ThreadPool.QueueUserWorkItem(callBack, i);
            }
            Console.ReadLine();
        }

        private static void RunAsync(object state)
        {
            for (var i = 0; i < 200; i++)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://localhost:49425/");
                    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", "some data");
                    var x = client.GetAsync('URL');

                    if (x.Result.IsSuccessStatusCode)
                    {
                        var result = x.Result.Content.ReadAsAsync<float>();
                    }
                    Interlocked.Increment(ref counter);
                    Console.WriteLine(counter + " Thread : "+ state + " # request " + i);
                }
            }
        }
    }
public float GetTurnover(Guid ClientUid, int startDate, int endDate)
    {
        float returnValue = 0.0f;
        var cn = new AdomdConnection();
        cn.ConnectionString = Constants.CubeConnectionString;
        try
        {
            var open = Task.Run(() => cn.Open());
            Task.WaitAll(open);
        }
        catch
        {

        }


        var mdxQuery = new StringBuilder();
        // string test = @"some query";

        using (var command = new AdomdCommand(query, cn))
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Amount", typeof(float));

            try
            {
                var data = command.ExecuteReader();
                dt.Load(data);
                var close = Task.Run(() => cn.Close());
                Task.WaitAll(close);
                float.TryParse(dt.Rows[0].ItemArray[1].ToString(), out returnValue);

                return returnValue;
            }
            catch
            {

            }
            return returnValue;
        }
此行:
var open=Task.Run(()=>cn.open())有时在100-150个不一致的请求后中断。我增加了IIS和多维数据集上的同时连接,但似乎没有帮助

你知道什么坏了吗

编辑

堆栈跟踪:

Microsoft.AnalysisServices.AdomdClient.AdomdConnectionException was unhandled by user code
  HResult=-2146233088
  Message=The connection either timed out or was lost.
  Source=Microsoft.AnalysisServices.AdomdClient
  StackTrace:
       at Microsoft.AnalysisServices.AdomdClient.XmlaClient.EndRequest()
       at Microsoft.AnalysisServices.AdomdClient.XmlaClient.SendMessage(Boolean endReceivalIfException, Boolean readSession, Boolean readNamespaceCompatibility)
       at Microsoft.AnalysisServices.AdomdClient.XmlaClient.Discover(String requestType, String requestNamespace, ListDictionary properties, IDictionary restrictions, Boolean sendNamespacesCompatibility)
       at Microsoft.AnalysisServices.AdomdClient.XmlaClient.SupportsProperty(String propName)
       at Microsoft.AnalysisServices.AdomdClient.XmlaClient.Connect(ConnectionInfo connectionInfo, Boolean beginSession)
       at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Connect(Boolean toIXMLA)
       at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.AdomdConnection.IXmlaClientProviderEx.ConnectXmla()
       at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.ConnectToXMLA(Boolean createSession, Boolean isHTTP)
       at Microsoft.AnalysisServices.AdomdClient.AdomdConnection.Open()
       at DataAccess.Repositories.DashboardRepository.<>c__DisplayClass4.<GetTurnover>b__0() in :line 27
       at System.Threading.Tasks.Task.InnerInvoke()
       at System.Threading.Tasks.Task.Execute()
  InnerException: System.Net.WebException
       HResult=-2146233079
       Message=The remote server returned an error: (503) Server Unavailable.
       Source=System
       StackTrace:
            at System.Net.HttpWebRequest.GetResponse()
            at Microsoft.AnalysisServices.AdomdClient.HttpStream.GetResponseStream()
            at Microsoft.AnalysisServices.AdomdClient.HttpStream.GetResponseDataType()
       InnerException: 
Microsoft.AnalysisServices.AdomdClient.AdomdConnectionException未由用户代码处理
HResult=-2146233088
Message=连接超时或丢失。
Source=Microsoft.AnalysisServices.AdomdClient
堆栈跟踪:
在Microsoft.AnalysisServices.AdomdClient.XmlaClient.EndRequest()上
位于Microsoft.AnalysisServices.AdomdClient.XmlaClient.SendMessage(布尔endReceivalIfException、布尔readSession、布尔readNamespaceCompatibility)
位于Microsoft.AnalysisServices.AdomdClient.XmlaClient.Discover(字符串请求类型、字符串请求命名空间、ListDictionary属性、IDictionary限制、布尔SendNamespaces兼容性)
位于Microsoft.AnalysisServices.AdomdClient.XMLACLlient.SupportsProperty(String propName)
在Microsoft.AnalysisServices.AdomdClient.XMLACLlient.Connect(ConnectionInfo ConnectionInfo,Boolean beginSession)
位于Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Connect(布尔值为XMLA)
位于Microsoft.AnalysisServices.AdomdClient.AdomdConnection.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.AdomdConnection.IXmlaClientProviderEx.ConnectXmla()
在Microsoft.AnalysisServices.AdomdClient.AdomdConnection.ConnectToXMLA(布尔createSession,布尔isHTTP)
在Microsoft.AnalysisServices.AdomdClient.AdomdConnection.Open()上
在第27行中的DataAccess.Repositories.DashboardRepository.c__DisplayClass4.b__0()处
在System.Threading.Tasks.Task.InnerInvoke()中
在System.Threading.Tasks.Task.Execute()中
InnerException:System.Net.WebException
HResult=-2146233079
Message=远程服务器返回错误:(503)服务器不可用。
来源=系统
堆栈跟踪:
在System.Net.HttpWebRequest.GetResponse()中
在Microsoft.AnalysisServices.AdomdClient.HttpStream.GetResponseStream()上
位于Microsoft.AnalysisServices.AdomdClient.HttpStream.GetResponseDataType()处
内部异常:

包括异常信息/stacktrace@user469104添加了堆栈跟踪stacktrace表示您创建的请求超过了AnalysisServices所能处理的数量。可能是配置问题,也可能只是吞吐量/资源问题。运行线程时在服务器上运行perfmon,查看资源的利用情况。@Timsen您在哪里停止了此操作?我遇到了一个类似的问题,有一个与你类似的短暂异常。通过阅读,我认为这与ADOMD.NET/SSAS连接不是池连接这一事实有关,并且不支持池连接。