从Asp.net mvc调用R脚本

时间:2015-09-03 10:10:30

标签: .net asp.net-mvc r r.net

我的目标是调用保存在磁盘中的R函数,执行该函数并将输出显示到html页面。

为了获得这个,我写了下面的代码(在网上的某处找到)。

 public ActionResult Index()
    {
        var rCodeFilePath = @"K:/RPrograms/hello.R";

        var rScriptExecutablePath = @"C:/Program Files/R/R-3.2.2/bin/Rscript.exe";

        string result = string.Empty;

        try
        {

            var info = new ProcessStartInfo();
            info.FileName = rScriptExecutablePath;
            info.WorkingDirectory = Path.GetDirectoryName(rScriptExecutablePath);
            info.Arguments = rCodeFilePath;

            info.RedirectStandardInput = false;
            info.RedirectStandardOutput = true;
            info.UseShellExecute = false;
            info.CreateNoWindow = true;

            using (var proc = new Process())
            {
                proc.StartInfo = info;
                proc.Start();
                result = proc.StandardOutput.ReadToEnd();
                proc.Close();
            }

            ViewBag.Result=result;
        }
        catch (Exception ex)
        {
            throw new Exception("R Script failed: " + result, ex);
        }

        return View();
    }

我没有看到任何错误,但在“结果”中,我得到一个空的结果。当我在'RGui'中运行该函数时,它会显示一个结果。 R函数基本上是一个hello world代码。

任何人都可以表现出一些亮点吗?

1 个答案:

答案 0 :(得分:0)

您确定这是正确的网址吗? “C:/ Program Files / R / R-3.2.2 / bin / Rscript.exe” 尝试使用您的URL到这样的文件:C:\ Program Files \ R \ R-3.2.2 \ bin \ Rscript.exe

我只是在暗示,但不确定。

Goodluck继续。