Невозможно запустить скрипт SAS через C # - PullRequest
1 голос
/ 12 апреля 2019

У меня есть требование запустить скрипт SAS через веб-приложение, используя asp.net и c #.

Я использовал 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;



1 Ответ

3 голосов
/ 12 апреля 2019

Рассматривали ли вы не делать это с помощью процесса?У SAS есть технология Integration Technologies, которая у вас, скорее всего, есть.Он взаимодействует с использованием интерфейса COM.Затем вы можете выполнить 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.Однако я не верю, что это проблема.Я думаю, что вы столкнулись с проблемой безопасности.Посмотрите на Event Viewer и посмотрите, появляется ли он.IISS требует безопасности для выполнения в каталоге.

Наконец, почему вы используете IIS?Если у вас нет устаревших требований, IIS не должен использоваться.Переключитесь на Kestrel и ASP.NET Core.Я представлю в SGF документ об использовании SAS таким образом.Загрузите бумагу и код, как только они будут доступны (на следующей неделе?)

...