2017-08-08 89 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)後,它現在正在工作沒有任何例外多次:)

相關問題