程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET通過DSO訪問分析服務器的權限問題

ASP.NET通過DSO訪問分析服務器的權限問題

編輯:.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文件的<%@ Page %>中加入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查找的),一部分是自己探索和驗證的結果,有錯誤的地方,請告知,謝謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved