简体   繁体   中英

Why does R.NET work locally but stop working in IIS?

I have an ASP.NET MVC application that sends parameters to an R script, the R script then generates a file and puts it in a folder locally. The process works perfectly on my local machine through Visual Studio but goes in and out after I publish and use IIS. Below is how I am initializing R.NET and getting these values from my view via AJAX.

I also have placed both of these PATHs in my system environment variables.

If anyone knows why IIS only works right after I restart my OS and then stops working shortly after I would greatly appreciate it. Seems odd that I have no problems in Visual Studio that I face in IIS.

        [HttpGet]
    public JsonResult Index1(string modelTypes = null, string fileNames = null, string[] locations = null, string lowerLimits = null, string upperLimits = null, string areas = null, string productivities = null, string[] fobs = null)
    {
        @ViewBag.UserName = System.Environment.UserName;
        string userName = @ViewBag.UserName;
        //Declare field parameters
        var strModelTypeValue = modelTypes;
        string strFileName = fileNames;
        var strLocationValue = locations;
        var strLowerLimitValue = lowerLimits;
        var strUpperLimitValue = upperLimits;
        string strAreaValue = areas;
        string strProductivityValue = productivities;
        string strFobValue = fobs.ToString();
        var libraryLocation = "C:/Users/" + userName + "/Documents/R/win-library/3.2";

        string rPath = @"C:\Program Files\R\R-3.3.2\bin\x64";
        string rHome = @"C:\Program Files\R\R-3.3.2";

        //Initialize REngine
        REngine.SetEnvironmentVariables(rPath, rHome);
        REngine engine = REngine.GetInstance();
        engine.Initialize();

        if (fobs.Length > 1)
        {
            strFobValue = string.Join(" ", fobs);
        }
        else
        {
            strFobValue = "ALL";
        }




        //Declare R Script path
        var rScriptPath = "C:/Users/" + userName + "/Documents/R/RWDir/Loop_Optimization.R";

        //Check to see if there was more than one location selected
        if (strLocationValue.Length > 1)
        {

            foreach (var item in strLocationValue)
            {
                //Set string location to each location value in loop
                var strlocation = item;

                //Add values to parameter list
                var myParams = new List<string>
                {       

                    strModelTypeValue,
                    strFileName,               
                    strlocation,                
                    strLowerLimitValue,
                    strUpperLimitValue,
                    strAreaValue,
                    strProductivityValue,
                    strFobValue,
                    libraryLocation

                };

                //Set myParams as arguments to be sent to r script
                engine.SetCommandLineArguments(myParams.ToArray());
                engine.Evaluate("source('" + rScriptPath + "')");
            }

        }
        //Only one location specified, no need to loop
        else
        {
            foreach (var item in strLocationValue)
            {
                //Set string location to each location value in loop
                var strlocation = item;
                var myParams = new List<string>
                {

                    strModelTypeValue,
                    strFileName,
                    strlocation,
                    strLowerLimitValue,
                    strUpperLimitValue,
                    strAreaValue,
                    strProductivityValue,
                    strFobValue,
                    libraryLocation
                };

                engine.SetCommandLineArguments(myParams.ToArray());
                engine.Evaluate("source('" + rScriptPath + "')");
            }
        }
        //engine.Evaluate("source('" + rScriptPath + "')");
        //engine.Dispose();
        return Json("success", JsonRequestBehavior.AllowGet);

    }

你通过附加过程进行了调试吗?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM