Troubleshooting issues preventing R.NET from finding R paths on Windows
Sample program using R.NET works from command line application, but fails running from ASP.NET (often refered to in online questions as a "running from a Web App")
REngine r = REngine.GetInstance();
// further code
An unhandled exception of type 'RDotNet.EvaluationException' occurred in RDotNet.dll
Additional information: Error: package or namespace load failed for 'RODBC'
See instructions and links in the tutorial page ASP.NET running R.NET
Below are extracts from this discussion thread with instructions that may help you diagnose issues with running R.NET from ASP.NET.
You can find ASP.NET sample code in the R.NET onboarding samples, You'll find a visual studio solution file under /rdotnet-onboarding/solutions/WebApp. Credits for the bulk of this sample go to Richie Melton.
Environment from which these instructions were written:
Win7 64 bits
This section uses an arbitrary package, twitteR, for the sake of example.
You can put breakpoints into
CodeController.Execute and its constructor, in the sample web application of the onboarding guide. Then if executing from the Web page:
and using the "immediate" debug window on breakpoints
So note that even if I am running a 64 bits operating system and the build is AnyCPU, the process is 32 bits, so the 32 bits native
R.dll should be loaded. If I query for the environment variables using the "Immediate" debug window of Visual Studio.
R_HOME is present as set by R.NET, but the path to the native
R.dll is not present in the
PATH (should be at the end, as appended by R.NET)
The call to
r.Evaluate('library(twitteR)'); thus fails indeed.
PATH should have included "c:\Program Files\r\R-3.2.0\bin\i386", but it is missing. R.NET would have appended it. Don't know/understand why IIS does that, whatever. R_HOME has been set correctly by R.NET (and the path format for R_HOME is deliberate)
To fix it follow instructions in the tutorial page ASP.NET running R.NET
Restart in debug mode, same breakpoint, immediate window:
Then things work:
tuser <- getUser('geoffjentry')