401未经授权使用System.Net.CredentialCache.DefaultCredentials

时间:2018-06-20 08:24:09

标签: c# windows ssas mdx olap

我正在为SQL Server Analysis Services多维开发一个名为OLAP Action的小东西。这是一段C#代码,完成了OLAP数据库无法完成的一些工作。在这种情况下,我要查询OData Web客户端并从中返回一些数据。 OLAP Action本身具有一些身份验证设置,例如: -用户当前用户凭证 -模拟为Windows用户(用户名,密码)

此OLAP操作与执行该操作的客户端位于不同的服务器上。在其中,对OData的身份验证如下所示:

var wc = new WebClient();
wc.UseDefaultCredentials = true;
                    wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
wc.Headers["Accept"] = "application/json;odata=nometadata";

前提是连接到OLAP数据库并执行此操作的用户也可以访问OData,因为其凭据在身份验证过程中使用,因此OLAP设置为“模拟当前用户”。 问题是,执行此操作时(通过简单的CALL ASSP.QueryOData()MDX),将返回错误401-未经授权。但是,如果我将身份验证选项更改为“模拟Windows用户”并放入以前尝试执行该操作的Windows用户的精确凭据,那么它将起作用。

我尝试过

wc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

ICredentials creds = CredentialCache.DefaultCredentials;
                    NetworkCredential crenet = creds.GetCredential(uri, "Basic");
                    wc.Credentials = crenet;

NetworkCredential netCred = CredentialCache.DefaultNetworkCredentials.GetCredential(uri, "NTLM");
                    wc.Credentials = netCred;

但是它们都不起作用。我的想法不多了,基本上是在寻找线索以防万一。此设置可在测试环境中使用,因此我猜服务器/客户端的设置有问题。

0 个答案:

没有答案