首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IIS中使用R.net运行外部库

在IIS中使用R.net运行外部库
EN

Stack Overflow用户
提问于 2018-01-21 23:14:07
回答 2查看 1.3K关注 0票数 0

我们试图从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运行它不起作用。通常,它只是缺少一个路径变量才能让它工作,但是这里似乎不是这样的。

我们尝试过的是:

  • 确保PATH变量有必要的文件夹(即C:\Program \R\R-3.4.3\bin\x64等)。如果这是错误的,那么R.net将不能在本地工作,而且我还验证了IIS没有重置路径变量,这在其他源中已经指出。当我从IIS中检查路径变量时,会列出所需的文件夹。
  • 在IIS下运行时,检查R.net中的库、主路径和bin路径是否正确。
  • 确保IIS_IUSRS用户对所需的文件夹和文件具有读写访问权限。
  • 验证R码是正确的。

这似乎是一个常见的问题,但大多数解决方案都提到确保路径变量是正确的,这在这种情况下是不够的。

我们正在运行(Amazon服务):Windows 2016 x64,IIS10,R.NET 1.7,C# 4.5.2,R3.4.2

我还在另一个(非AWS)服务器上尝试了类似的设置。

有什么能导致这一切的想法吗?由于很多人对R.Net和IIS都有问题,我怀疑有人遇到了同样的问题,路径变量不够吗?

EN

回答 2

Stack Overflow用户

发布于 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上运行它时会产生问题。

票数 3
EN

Stack Overflow用户

发布于 2018-02-12 08:23:10

我在解决同样的问题。对于IIS,我没有找到解决方案。我也在调试R.NET代码,但是通过设置正确的路径到R文件夹的解决方案不起作用。

解决方案是创建额外的层,覆盖正在运行的R项目(实际上创建自己的R服务器)。我使用了自我托管的WCF服务,

https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service

这实际上是控制台应用程序,并且有利于应用程序在IIS应用程序池中运行。该解决方案还包括单例REngine问题。如果您在IIS中运行实例或REngine,则只有通过停止应用程序池才能对其进行处理。对于自托管服务,您可以设置触发器,以便在内存泄漏时重新启动应用程序。

在此实现过程中,我发现在控制台应用程序的调试模式下再次运行R.NET时出现问题--我得到了错误“库”.“无法加载”,所以我使用了R3.4.2。效果很好。需要安装86x --在64x/ANYCPU环境中运行的应用程序是独立的。

你找到其他解决办法了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48372723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档