私は、Rスクリプトにパラメータを送るASP.NET MVCアプリケーションを持っています.Rスクリプトはファイルを生成し、それをローカルのフォルダに入れます。このプロセスは、Visual Studioを使用してローカルマシン上で完璧に動作しますが、IISを公開して使用すると出入りします。以下は、私がR.NETを初期化する方法と、AJAXを介してこれらの値を私のビューから取得する方法です。なぜR.NETはローカルで動作しますが、IISでの動作は停止しますか?
また、これらのPATHの両方を私のシステム環境変数に入れました。
私のOSを再起動した直後にIISが正しく動作する理由を知っている人は、すぐに作業を停止していただければ幸いです。私がIISで直面しているVisual Studioには何の問題もないのは間違いです。
[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);
}
ウェブアプリケーションがIIS上で動作することがありますが、OSを再起動した後でのみ動作し、その後再び停止します。 – Jwoody30