我们试图从IIS中的R.net网页上运行ASP.Net,但遇到了R引擎无法访问外部库的问题。我知道这是一个常见的问题,但是对于IIS (只有从内部VS表示的IIS表达式),典型的解决方案没有起作用。
例如,当试图在依赖DLL的R中使用“colorRampPalette”时,会出现以下错误消息:
inDL(x,as.logical(本地),as.logical(现在),.)中的错误:无法加载共享对象C:/Program LoadLibrary LoadLibrary:无法找到指定的模块。
问题不是stats.dll,而是它引用的另一个DLL。
现在,在R中使用这个函数很好。在VS调试中使用来自R.net的函数可以很好地工作。但是,从IIS运行它不起作用。通常,它只是缺少一个路径变量才能让它工作,但是这里似乎不是这样的。
我们尝试过的是:
这似乎是一个常见的问题,但大多数解决方案都提到确保路径变量是正确的,这在这种情况下是不够的。
我们正在运行(Amazon服务):Windows 2016 x64,IIS10,R.NET 1.7,C# 4.5.2,R3.4.2
我还在另一个(非AWS)服务器上尝试了类似的设置。
有什么能导致这一切的想法吗?由于很多人对R.Net和IIS都有问题,我怀疑有人遇到了同样的问题,路径变量不够吗?
发布于 2018-12-05 07:16:57
正如user2967150所提到的,问题不是stats.dll,而是它引用的另一个DLL。经过大量的研究,我发现它试图在'C:/Program /R/R-3.4.2/ Rlapack.dll /stats/libs/x64/ path.中找到Rlapack.dll。因此,您只需将Rlapack.dll从'C:\Program \R3.4.4\bin\x64 \Rlapack.dll‘复制到'C:/Program /R/3.4.2/library/stats/libs/x64/。
注意:我假设您的web应用程序在本地运行,但是当您尝试在IIS上运行它时会产生问题。
发布于 2018-02-12 08:23:10
我在解决同样的问题。对于IIS,我没有找到解决方案。我也在调试R.NET代码,但是通过设置正确的路径到R文件夹的解决方案不起作用。
解决方案是创建额外的层,覆盖正在运行的R项目(实际上创建自己的R服务器)。我使用了自我托管的WCF服务,
这实际上是控制台应用程序,并且有利于应用程序在IIS应用程序池中运行。该解决方案还包括单例REngine问题。如果您在IIS中运行实例或REngine,则只有通过停止应用程序池才能对其进行处理。对于自托管服务,您可以设置触发器,以便在内存泄漏时重新启动应用程序。
在此实现过程中,我发现在控制台应用程序的调试模式下再次运行R.NET时出现问题--我得到了错误“库”.“无法加载”,所以我使用了R3.4.2。效果很好。需要安装86x --在64x/ANYCPU环境中运行的应用程序是独立的。
你找到其他解决办法了吗?
https://stackoverflow.com/questions/48372723
复制相似问题