明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP.NET通過DSO訪問區(qū)分服務(wù)器的權(quán)限問題

[摘要]ASP.NET中通過Decision Support Objects(DSO)訪問分析服務(wù)器的權(quán)限問題 1. 引子先看一段代碼:public class WebForm1 : System.Web.UI.Page private void Button1_Click(object sende...

ASP.NET中通過Decision Support Objects(DSO)訪問分析服務(wù)器的權(quán)限問題

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中調(diào)用DSO的一個(gè)代碼片斷,程序的本意是想連接到lisp-pc上的分析服務(wù)器(這段代碼所在的Web服務(wù)器也在lisp-pc上)。但不幸得的是執(zhí)行完dsoServer.Connect("lisp-pc");之后,程序拋出了一個(gè)異常。事實(shí)上,同樣的代碼在Widnows Application的項(xiàng)目中,運(yùn)行正常。

2. 到底發(fā)生了什么事情
事實(shí)上,這段代碼潛在著三個(gè)問題。

2.1 線程模式不一致

DSO線程模式跟ASP.NET的客戶端環(huán)境線程模式不一致。前者是STA模式,而后者是MTA模式。解決的辦法是在這段代碼所在的ASPX文件的<%@ Page %>中加入aspcompat="true",使得,這個(gè)頁(yè)面的線程模式跟STA匹配。

2.2 OLAP Administrators

DSO的調(diào)用者需要加入OLAP服務(wù)器的OLAP Administrators組才有權(quán)限連接到OLAP服務(wù)器。ASP.NET中,在默認(rèn)的情況下,這段代碼調(diào)用者的身份是ASPNET和IUSER_MACHINE(這兩個(gè)角色在什么時(shí)候起作用有待考查)。解決的辦法有在OLAP服務(wù)器上,把這個(gè)賬戶加入到OLAP Administrators組中。更進(jìn)一步的方法是,在IIS服務(wù)器中配置ASP.NET應(yīng)用程序的身份,或者通過web.config的identity屬性配置,同樣將定制好的用戶加入OLAP服務(wù)器的OLAP Administrators組中。

2.3 分析服務(wù)器的BIN目錄

一個(gè)很讓人疏忽的地方就是,DSO的調(diào)用者需要對(duì)分析服務(wù)器的BIN目錄的出來又讀取的權(quán)限,還需要有修改和寫入的安全權(quán)限。對(duì)分析服務(wù)器的BIN的存取是以Windows文件共享的方式進(jìn)行處理的?梢圆孪,對(duì)DSO調(diào)用是,DSO可能需要對(duì)該目錄下的msmdrep.mdb和msmdqlog.mdb兩個(gè)文件進(jìn)行存取,所以,才需要對(duì)BIN目錄有讀取和寫入的權(quán)限。

3. 總結(jié)

以上的解決方法,一部分整理自新聞組(通過Google查找的),一部分是自己探索和驗(yàn)證的結(jié)果,有錯(cuò)誤的地方,請(qǐng)告知,謝謝!