c# - 无法通过 C# 运行 SAS 脚本

标签 c# sas

我需要使用 asp.net 和 c# 通过 Web 应用程序运行 SAS 脚本。

我已使用 ProcessStartInfo 执行 SAS 脚本。这在本地与解决方案一起工作正常。一旦我在 IIS 中托管应用程序,它就无法工作并返回退出代码 111。请帮助我解决这个问题。

ProcessStartInfo info = new ProcessStartInfo("path of SAS EXE","file path");
int exitCode = 0;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);
p.WaitForExit();
exitCode = p.ExitCode;



最佳答案

您是否考虑过不使用流程? SAS 有一种称为集成技术的技术,您很可能拥有它。它使用 COM 接口(interface)进行连接。然后,您可以以这种方式执行 SAS 并传递所需的内容,而不是使用命令行调用。

示例代码如下:

SAS.Workspace ws = new Workspace();
LanguageService ls = ws.LanguageService;
StoredProcessService sp = ls.StoredProcessService;
sp.Repository = @"file:" + @"x:\temp";
sp.Execute("test.sas", string.Empty);
string log = ls.FlushLog(1000);

如果您需要通过进程启动来完成,这里是代码:

此外,如果您将命令传递给 SAS,我也看不到任何命令。您必须从命令行(至少程序名称)将命令传递给 SAS。 info.Arguments 是一个开始。此外,将 std 输出重定向到一个文件。查看 info.RedirectStandardOutput 和 info.RedirectStandardError。但是,我不认为这是问题所在。我认为您遇到了安全问题。查看事件查看器,看看它是否弹出。 IISS 需要安全才能在目录中执行。

最后,您为什么要使用 IIS?除非您有遗留要求,否则不应使用 IIS。切换到 Kestrel 和 ASP.NET Core。我将在 SGF 上发表一篇关于以这种方式使用 SAS 的论文。尽快下载论文和代码(下周?)

关于c# - 无法通过 C# 运行 SAS 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647324/

相关文章:

c# - Microsoft Sync Framework 唯一索引错误

SAS SQL 宏增量日期范围

sas - 压缩动态变量的换行符

sas - 使用 Proc sgplot 的条形图中每个条形的不同标签

mysql - SAS 中的大字符字段大小

c# - 如何处理协方差限制?

c# - 无法加载文件或程序集 System.ServiceModel,或其依赖项之一。没有足够的存储空间来处理这个命令

c# - 检查Excel文件是否有 "Sheet protection"或 "Custom defined properties in cells"

c# - 如何声明嵌套枚举?

sql - 优化不平等的左连接