从 ASP.net 应用程序连接到分析服务

Connecting to Analysis Service from ASP.net application

我正在尝试实现 ASP.net 需要连接 Microsoft Analysis Service (SSAS) 以从多维数据集和维度检索数据的应用程序。

    static void Main(string[] args)
    {
        StringBuilder connectionStringBuilder = new StringBuilder();
        connectionStringBuilder.Append("Data Source=MyDataSource;");
        connectionStringBuilder.Append("Initial Catalog=MyOlapDatabase;");
        connectionStringBuilder.Append(@"User Id=OlapServerMachineName\MyUserName;");
        connectionStringBuilder.Append("Password=MyPassword;");
        connectionStringBuilder.Append("Provider=MSOLAP.5;");
        connectionStringBuilder.Append("Persist Security Info=True;");
        connectionStringBuilder.Append("MDX Compatibility=1;");
        connectionStringBuilder.Append("Safety Options=2;");
        connectionStringBuilder.Append("MDX Missing Member Mode=Error;");
        connectionStringBuilder.Append("Update Isolation Level=2;");



        using (var connection = new AdomdConnection(connectionStringBuilder.ToString()))
        {
            connection.Open();

        }

    }

此代码抛出以下异常

A connection cannot be made. Ensure that the server is running.

内部异常表示

Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

内部异常的内部异常是

Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

另一方面,我可以使用相同的用户名和密码从 Excel 连接到此分析服务,如下所示

我尝试按照 here 所述设置对 Olap 服务器的 HTTP 访问。通过 IIS 设置的匿名身份验证,我能够成功连接。但是,当我禁用匿名选项并启用基本身份验证时,我再次无法从我的客户端工具进行连接,但是 Excel 使用基本身份验证可以正常工作。

但尝试使用 HTTP 访问只是临时解决方案。我不想使用该选项。我希望能够像在 excel 中那样从我的客户端应用程序连接 SSAS。

我的问题是,我连接 SSAS 的实现(不起作用)和 excel 身份验证(完美运行)之间有什么区别?

提前致谢。

不要将用户名和密码放在连接字符串中,而是尝试至少将您的 .Open() 函数调用包装在这个模仿者中:

https://github.com/OlapPivotTableExtensions/OlapPivotTableExtensions/blob/master/OlapPivotTableExtensions/Impersonater.cs

与连接字符串上的密码相比,我在这方面取得了更大的成功。

除非您愿意,否则您不需要 msmdpump HTTP 层。