我被要求在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程序目录。有谁知道还有什么我可能需要设置?谢谢。
版本8,对不起。 – eftpotrm 2010-01-13 23:47:55