2010-01-13 116 views
3

我被要求在ASP.Net應用程序中讀取SAS中的一些數據。我有一個Windows窗體應用程序的工作代碼。然而,相同的代碼不是工作在ASP.Net但是我可以試試它。具有相同引用的乾淨項目始終失敗。從.Net中的SAS數據源讀取數據

這就是我已經得到了連接:

SASWorkspaceManager.WorkspaceManager oWorkspaceManager 
     = new SASWorkspaceManager.WorkspaceManager(); 
    string xmlInfo = ""; 

    SASWorkspaceManager.ServerDef oServerDef = new SASWorkspaceManager.ServerDef(); 
    oServerDef.MachineDNSName = "server"; 
    oServerDef.Protocol = SASWorkspaceManager.Protocols.ProtocolBridge; 
    oServerDef.Port = <port>; 
    oServerDef.BridgeEncryptionAlgorithm = "SASProprietary"; 
    oServerDef.BridgeEncryptionLevel = 
     SASWorkspaceManager.EncryptionLevels.EncryptUserAndPassword; 

    SAS.Workspace oSASWorkspace = 
     oWorkspaceManager.Workspaces.CreateWorkspaceByServer ("", 
     SASWorkspaceManager.Visibility.VisibilityProcess, oServerDef, "user", 
     "pass", out xmlInfo); 

    oSASWorkspace.LanguageService.Submit(
     "proc means data = sashelp.class;output out=meanout;run;"); 
    OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter 
          ("select * from work.meanout", 
     "provider=sas.iomprovider.1; SAS Workspace ID=" + 
     oSASWorkspace.UniqueIdentifier); 
    DataSet oDS = new DataSet(); 
    oOleDbDataAdapter.Fill(oDS, "sasdata"); 

    oWorkspaceManager.Workspaces.RemoveWorkspaceByUUID(
     oSASWorkspace.UniqueIdentifier); 
    oSASWorkspace.Close(); 

只需它未能與 內部異常初始化數據適配器「試圖讀取或寫入保護內存這通常是一個跡象其他內存已損壞。「如果我將Trust = Full添加到web.config文件中,則填充數據適配器時會直接出現相同的錯誤。我們可以證明,通過工作區管理器執行SAS命令正在工作,這是在我們嘗試讀取結果時發現它在初始化連接到SAS時失敗的結果。無論出於何種原因,這似乎是無處不在引爲如何做到這一點只是不斷通過時運行ASP.Net引發錯誤的片段

OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter 
         (<Read Command>, 
    "provider=sas.iomprovider.1; SAS Workspace ID=" + 
    oSASWorkspace.UniqueIdentifier); 

我猜這是一個用戶權限問題,它不喜歡在IIS用戶下運行,但不知道授予它的權限。有些SAS文檔在某處或其他地方(抱歉,找不到)建議確保用戶有權限,但ASPNET用戶可以完全訪問開發機器上的整個SAS程序目錄。有誰知道還有什麼我可能需要設置?謝謝。

回答

0

您正在使用哪種版本的SAS?從9.13開始,WorkspaceManager不贊成使用ObjectManagerMulti(或9.2中的ObjectManagerMulti2)。我不確定這會不會解決你的錯誤。

+0

版本8,對不起。 – eftpotrm 2010-01-13 23:47:55

0

是另一臺機器上的asp服務器。如果是這樣,並且可能無論如何,您需要授權SAS Integration Technologies。有關血淋淋的細節,請參閱在線文檔。

+0

謝謝,是的。我相當肯定,這不是一個授權問題或類似的,但因爲從Windows窗體應用程序運行時相同的代碼工作。它只有在ASP.Net應用程序中運行時纔會中斷。 – eftpotrm 2010-01-14 18:41:20

0

在IIS中運行類似的東西時遇到了一些問題。首先,您必須在管理工具 - >組件服務中調整SAS Workspace組件的權限。您必須爲您的應用程序池正在運行的用戶添加權限。這將在組件的屬性窗口下 - >安全選項卡 - >啓動和激活權限以及訪問權限。

我也最終不得不修改配置中的SASUSER目錄,因爲網絡服務沒有訪問權限。

C:\ Program Files文件\ SASHome \ SASFoundation \ 9.3 \ NLS \ EN \ sasv9.cfg

/* - * SASUSER/ -SASUSER「C 「CSIDL_PERSONAL \我的SAS文件\ 9.3?」:\ sasuser「