我被要求在ASP.Net应用程序中从SAS读取一些数据。我已经为Windows Forms应用程序编写了代码。但是相同的代码不能在ASP.Net中工作,但我可以试试。具有相同引用的干净项目始终失败。
以下是我为连接所做的事情:
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();
只是它没有初始化数据适配器的内部异常 “试图读取或写入受保护的内存。这通常表明其他内存已损坏。”如果我在web.config文件中添加Trust = Full,我在填充数据适配器时会直接得到相同的错误。我们可以证明通过工作区管理器执行SAS命令是有效的,当我们尝试读取结果时,它会在初始化与SAS的连接时失败。无论出于何种原因,片段
OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter
(<Read Command>,
"provider=sas.iomprovider.1; SAS Workspace ID=" +
oSASWorkspace.UniqueIdentifier);
似乎在任何地方都被引用,因为如何在通过ASP.Net运行时不断引发错误。
我猜这是一个用户权限问题,它不喜欢在IIS用户下运行,但不知道需要授予它的权限。某些SAS文档或其他(抱歉,找不到)建议确保用户具有权限,但ASPNET用户确实可以完全访问dev计算机上的整个SAS程序目录。有谁知道我还需要设置什么?感谢。
答案 0 :(得分:0)
您使用的是哪个版本的SAS?从9.13开始,不推荐使用WorkspaceManager,而使用ObjectManagerMulti(或9.2中的ObjectManagerMulti2)。我不确定这会解决你的错误。
答案 1 :(得分:0)
asp服务器是否在另一台机器上。如果是这样,并且可能无论如何,您将需要许可SAS Integration Technologies。有关血淋淋的详细信息,请参阅在线文档。
答案 2 :(得分:0)
在IIS中运行类似的东西时遇到了几个问题。首先,您必须在管理工具中调整SAS工作区组件的权限 - &gt;组件服务。您必须为运行应用程序池的用户添加权限。这将在组件的属性窗口下 - &gt;安全标签 - &gt;启动和激活权限,以及访问权限。
我最终还是要修改配置中的SASUSER目录,因为网络服务没有访问权限。
C:\ Program Files \ SASHome \ SASFoundation \ 9.3 \ nls \ en \ sasv9.cfg
/ * - SASUSER&#34;?CSIDL_PERSONAL \我的SAS文件\ 9.3&#34; * / -SASUSER&#34; c:\ sasuser&#34;