ASP.NET通過DSO訪問分析伺服器的許可權問題

來源:互聯網
上載者:User
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尋找的),一部分是自己探索和驗證的結果,有錯誤的地方,請告知,謝謝!





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.