ASP.NET通过DSO访问分析服务器的权限问题

asp.net|访问|服务器|问题

ASP.NET中通过Decision Support Objects(DSO)访问分析服务器的权限问题

1. 引子

先看一段代码:

public class WebForm1 : System.Web.UI.Page
{
    private void Button1_Click(object sender, System.EventArgs e)
    {
        DSO.Server dsoServer = new DSO.ServerClass();
        dsoServer.Connect("lisp-pc");
        dsoServer.CloseServer();
    }
}

这是用ASP.NET中调用DSO的一个代码片断,程序的本意是想连接到lisp-pc上的分析服务器(这段代码所在的Web服务器也在lisp-pc上)。但不幸得的是执行完dsoServer.Connect("lisp-pc");之后,程序抛出了一个异常。事实上,同样的代码在Widnows Application的项目中,运行正常。

2. 到底发生了什么事情
事实上,这段代码潜在着三个问题。

2.1 线程模式不一致

DSO线程模式跟ASP.NET的客户端环境线程模式不一致。前者是STA模式,而后者是MTA模式。解决的办法是在这段代码所在的ASPX文件的中加入aspcompat="true",使得,这个页面的线程模式跟STA匹配。

2.2 OLAP Administrators

DSO的调用者需要加入OLAP服务器的OLAP Administrators组才有权限连接到OLAP服务器。ASP.NET中,在默认的情况下,这段代码调用者的身份是ASPNET和IUSER_MACHINE(这两个角色在什么时候起作用有待考查)。解决的办法有在OLAP服务器上,把这个账户加入到OLAP Administrators组中。更进一步的方法是,在IIS服务器中配置ASP.NET应用程序的身份,或者通过web.config的identity属性配置,同样将定制好的用户加入OLAP服务器的OLAP Administrators组中。

2.3 分析服务器的BIN目录

一个很让人疏忽的地方就是,DSO的调用者需要对分析服务器的BIN目录的出来又读取的权限,还需要有修改和写入的安全权限。对分析服务器的BIN的存取是以Windows文件共享的方式进行处理的。可以猜想,对DSO调用是,DSO可能需要对该目录下的msmdrep.mdb和msmdqlog.mdb两个文件进行存取,所以,才需要对BIN目录有读取和写入的权限。

3. 总结

以上的解决方法,一部分整理自新闻组(通过Google查找的),一部分是自己探索和验证的结果,有错误的地方,请告知,谢谢!

时间: 2024-09-09 16:40:30

ASP.NET通过DSO访问分析服务器的权限问题的相关文章

ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限

问题描述 对路径"d:windowssystem32inetsrvRuntimeError.log"的访问被拒绝.说明:执行当前Web请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.UnauthorizedAccessException:对路径"d:windowssystem32inetsrvRuntimeError.log"的访问被拒绝.ASP.NET未被授权访问所请求的资源.请考虑授

不能访问Web服务器的解决方法

访问Web服务器是许多局域网用户经常要做的一项"功课",在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速解决一些无法访问的小故障. 访问Web服务器是许多局域网用户经常要做的一项"功课",在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速解决一些无法访问的小故障.不过,本文下面贡献出来的Web服务器不能访问故障现象却比较特别,如果不加细细分析,单纯以经验来解决故障时,多半容易走弯路:为了帮助各位朋

以前收集的一些资料---(一种新思路)使用一个“静态”的ASP页面来改进你的服务器的性能

服务器|静态|性能|页面 使用一个"静态"的ASP页面来改进你的服务器的性能通常大家显示一个数据库中的信息时都是使用动态页面来生成的,这对于一个小网站或者当数据库内的容量不大时,系统的性能并没有什么影响.但是当用户要频繁地访问一个数据量很大的库时,系统是不是还能够承受得了了.下面介绍一种"静态"ASP技术来解决这个问题.例如现在这个有一个人员资料库,结构如下:ID    First     Last         Company      Email       

Win7旗舰版中的IIS7配置asp.net的运行环境_win服务器

以前弄过好多次,都没有成功,昨天晚上不知怎么地就成功了,借用我同学的一句话,这叫"灵光一闪",废话不多说了,这个成功是有图有视频有真相地哈! 这篇博文发表都三个月了,我自认为算是很详细了,可是还是很多人没有配置出来(天天有人在群里问我怎么配置),所以今天特意录成视频供大家参考. 特意申明:这是配置asp.net运行坏境,不是asp,asp和asp.net是有区别的.asp.net如果还是配置不出可以问,asp就算了,我不懂asp哦!无法帮你解决. Win7旗舰版中的IIS配置asp.n

ASP.Net缓存总结及分析 分享_实用技巧

1.页面缓存        要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可.         <%@ OutputCache CacheProfile=" " NoStore="True | False" Duration="#ofseconds" Shared="True | False" Location="Any | Client | Downstream | Server |

ASP.NET程序运行时提示服务器忙的问题

问题描述 我的网页是用ASP.NET做的,访问上一天之后,就提示服务器忙,访问不上,只要重起服务器上的IIS之后就好了,但总不能天天重起服务器上的IIS,所以想请教怎么能够解决这个问题. 解决方案 解决方案二:和我以前遇到的问题一样,不过很遗憾我自己不记得自己是怎么弄好的了只记得方法很简单.但是忘记了帮你顶一下吧解决方案三:印象中是感染病毒了,常见的方法是杀毒或重装系统解决方案四:没遇到过,帮顶

请帮忙-访问wbsphere服务器有如下错误页异常该如何解决?求大神帮助

问题描述 访问wbsphere服务器有如下错误页异常该如何解决?求大神帮助 错误页异常 SRVE0260E: 服务器无法使用对应用程序指定的错误页来处理如下所示的原始异常. 原始异常: 错误消息: javax.servlet.ServletException: Filter [WSCUrlFilter]: com.ibm.ws.console.core.servlet.WSCUrlFilter was found, but is missing another required class. 错

java ldap-java 访问ldap服务器,把dn下的tree全部读取出来

问题描述 java 访问ldap服务器,把dn下的tree全部读取出来 java 访问ldap服务器,把dn下的tree全部读取出来 解决方案 参考下:http://www.blogjava.net/i369/articles/130019.html 解决方案二: 我是要读取全部数据,不是基本的操作.

功能类似于java.net访问http服务器程序

程序|访问|服务器 package net.sonyhome.net; import java.io.*;import java.net.*;import java.util.*;import java.text.*;/** * 一个用来访问http服务器的东西.功能类似于java.net中的那个.但要强,这个对Post方法的支持更好. * 其实也不能说是我写的.不记得从哪儿找来的程序,稍事修改了一下.所以现在程序的结构都忘啦. * 不过有一点是肯定的,那就是可以用.呵呵. * 去年我做的Jav