Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在IIS中使用R.net运行外部库_C#_Asp.net_R_Iis_R.net - Fatal编程技术网

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

C# 在IIS中使用R.net运行外部库,c#,asp.net,r,iis,r.net,C#,Asp.net,R,Iis,R.net,我们试图从IIS中的ASP.net网页运行R.net,但遇到了R引擎无法访问外部库的问题。我知道这是一个常见的问题,但是当涉及到IIS时,典型的解决方案没有起作用(只有来自内部VS的IIS express) 例如,当尝试在依赖DLL的R中使用“colorRampPalette”时,会出现以下错误消息: inDL(x,as.logical(local),as.logical(now),…)中出错:无法加载共享对象“C:/Program Files/R/R-3.4.2/library/stats/l

我们试图从IIS中的ASP.net网页运行R.net,但遇到了R引擎无法访问外部库的问题。我知道这是一个常见的问题,但是当涉及到IIS时,典型的解决方案没有起作用(只有来自内部VS的IIS express)

例如,当尝试在依赖DLL的R中使用“colorRampPalette”时,会出现以下错误消息:

inDL(x,as.logical(local),as.logical(now),…)中出错:无法加载共享对象“C:/Program Files/R/R-3.4.2/library/stats/libs/x64/stats.dll”:加载库故障:找不到指定的模块

问题不是stats.dll,而是它引用的另一个dll

现在,在R中使用函数可以很好地工作。在VS调试中使用R.net中的函数可以很好地工作。但是,从IIS运行它不起作用。通常情况下,它只是缺少一个路径变量来让它工作,但这里的情况似乎不是这样

我们尝试的是:

  • 确保PATH变量具有必要的文件夹(即C:\Program Files\R\R-3.4.3\bin\x64等)。如果这是错误的,那么R.net将无法在本地工作,并且我还验证了IIS不会重置其他源中指出的路径变量。当我从IIS内部检查PATH变量时,会列出必要的文件夹
  • 在IIS下运行时,已检查R.net中的库、主页和bin路径是否正确
  • 确保IIS_IUSRS用户对必要的文件夹和文件具有读/写权限
  • 已验证R代码是否正确
这似乎是一个常见的问题,但大多数解决方案都涉及确保PATH变量是正确的,这在本例中是不够的

我们正在运行(Amazon web服务): Windows Server 2016 x64, IIS 10, R.NET 1.7, C#4.5.2, R 3.4.2

我也在另一台(非AWS)服务器上尝试过类似的设置


你知道这是什么原因吗?因为很多人都有关于R.Net和IIS的问题,我怀疑有人遇到了同样的问题,其中PATH变量不够?

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

该解决方案是在另一层创建的,该层包括运行R项目(实际上是创建自己的R服务器)。我使用了自托管WCF服务

这实际上是一个控制台应用程序,有利于应用程序不在IIS应用程序池中运行。此解决方案还包括单例重新生成问题。如果您在IIS中运行实例或重新生成,则不可能仅通过停止应用程序池来处置它。对于自托管服务,您可以设置重新启动应用程序的触发器,以防内存泄漏

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


你有没有找到其他解决办法?

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

该解决方案是在另一层创建的,该层包括运行R项目(实际上是创建自己的R服务器)。我使用了自托管WCF服务

这实际上是一个控制台应用程序,有利于应用程序不在IIS应用程序池中运行。此解决方案还包括单例重新生成问题。如果您在IIS中运行实例或重新生成,则不可能仅通过停止应用程序池来处置它。对于自托管服务,您可以设置重新启动应用程序的触发器,以防内存泄漏

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


您是否找到了其他解决方案?

如用户2967150所述,问题不在于stats.dll,而在于它引用的另一个dll。 在做了大量研究之后,我发现它试图在'C:/Program Files/R/R-3.4.2/library/stats/libs/x64/path中找到Rlapack.dll。 因此,您只需从“C:\Program Files\R\R-3.4.4\bin\x64\Rlapack.dll”复制Rlapack.dll 到'C:/ProgramFiles/R/R-3.4.2/library/stats/libs/x64/。 在此之后,web应用程序可以访问外部R库


注意:我假设您的web应用程序在本地运行,但当您尝试在IIS上运行它时会产生问题。

如用户2967150所述,问题不是stats.dll,而是它引用的另一个dll。 在做了大量研究之后,我发现它试图在'C:/Program Files/R/R-3.4.2/library/stats/libs/x64/path中找到Rlapack.dll。 因此,您只需从“C:\Program Files\R\R-3.4.4\bin\x64\Rlapack.dll”复制Rlapack.dll 到'C:/ProgramFiles/R/R-3.4.2/library/stats/libs/x64/。 在此之后,web应用程序可以访问外部R库


注意:我假设您的web应用程序在本地运行,但当您尝试在IIS上运行时会产生问题。

you.have.saved.my.day-小时尝试找出为什么它在console应用程序中工作,但在MVC等web应用程序中不工作-将进一步调查为什么会发生这种情况you.have.saved.my.day-小时尝试找出为什么它在console应用程序中工作但不是在MVC这样的web应用程序中,我们将进一步调查发生这种情况的原因