2017-08-08 88 views
0

上下文:当来到MVC Web App时,下面的一段代码与C#windows应用程序正常工作,它抛出一个异常“类型未处理的异常”系统.StackOverflowException”发生在RDotNet.dll”,我使用RDotnet v1.6.5在RDotNet.dll中发生未处理的类型为'System.StackOverflowException'的异常

string rScriptFilePath = ConfigurationManager.AppSettings["RScriptFilePath"].ToString(); 
    var envPath = Environment.GetEnvironmentVariable("PATH");var rBinPath = System.Environment.Is64BitProcess ? @"C:\Program Files\R\R-3.4.1\bin\x64" : @"C:\Program Files\R\R-3.4.1\bin\i386"; 
    Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + rBinPath); 
    engine = REngine.GetInstance(); 
    engine.Initialize(); 
    string execRScriptPath = "source(\"" + rScriptFilePath + "\", encoding = \"Windows-1252\")"; 
    engine.Evaluate(execRScriptPath); 

and my R script file contains the below code to get Data from MYSQL DB 'Users' table and and load data into the same DB "testTable10" table 

    if (!require("DT")) install.packages('DT') 
    if (!require("DBI")) install.packages('DBI') 
    if (!require("RMySQL")) install.packages('RMySQL') 
    library(DT) 
    library(DBI) 
    library(RMySQL) 

    mydb = dbConnect(MySQL(), user = 'userName', password = 'password', dbname = 'SomeDb', host = 'localhost') 
    dbListTables(mydb) 
    dbListFields(mydb, 'Users') 
    rs = dbSendQuery(mydb, "select Id,Code,Name from Users") 
    data = fetch(rs, n = -1) 
    dbWriteTable(mydb, "testTable10", data) 
    datatable(data) 

    Please help me to solve this problem....! 

回答

0

可能的解决方案1 ​​

我曾与从控制台应用程序移动R.Net到MVC Web应用程序相同的问题。

问题是,我默认使用旁边的数字图书馆图书馆。 说到这样一个绘图函数,抛出了一个StackOverflow-Exception。

在MVC上,不能访问GDI资源。 请检查您使用的某些功能是否需要/使用GDI功能。在我使用的函数中禁用graph = FALSE的图形输出后,它正在处理MVC。也许在你身边有类似的选择。


可能的解决方案2

即使禁用图形输出,我的R代码里面仅成功运行的第一次。在第二次运行时,再次发生Stackoverflow异常。 从微软切换到R-Open(https://mran.microsoft.com/open)后,它现在正在工作没有任何例外多次:)

相关问题