0

我曾尝试在 IIS 中托管的 ASP.NET 4 Web 应用程序上使用 NMath 库。虽然它在开发机器上完美运行,但在服务器上它抛出了这个异常:

无法加载 DLL 'nmath_native_x86.dll':访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.DllNotFoundException:无法加载 DLL 'nmath_native_x86.dll':访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[DllNotFoundException:无法加载 DLL 'nmath_native_x86.dll':访问被拒绝。(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))]
CenterSpace.NMath.Kernel.DotNetBlas.ca985db1fb290841a533a3547ace1ae2b(Int32* ca9e3f1c0641beace93cb8eb4a27060d6, Double* cf339080161dff75cfd1b46a10c2eec70, Int32* c757a2154665e6da4d820f8c504ec2601, Double* c00a69c4fa5b6d809b68a96ca184dcf79, Int32* c1565590bf448d2c630952a0391360cc3) +0
CenterSpace.NMath.Kernel.DotNetBlas .copy(Int32 n, DoubleDataBlock x, Int32 xOffset, Int32 incx, DoubleDataBlock y, Int32 yOffset, Int32 incy) +149 CenterSpace.NMath.Core.DoubleVector.set_Item(Slice slice, DoubleVector value) +165

虽然我在这里读到它可能与AppPool的权限或类似的东西有关,但我似乎无法指出问题所在。会是什么呢?!

4

1 回答 1

2

这可能是几个选择。

1) 是否安装了 C++ 运行时?没有它,NMath 无法加载本机 dll。请参阅此处的部署部分:http: //centerspace.net/doc/NMath/user/overview-83427.htm#Xoverview-83427

2) 也许你没有正确配置 NMath?你可以做 NMathConfiguration.NativeLocation 指向一个位置。更多在这里:

http://centerspace.net/doc/NMathSuite/ref/html/T_CenterSpace_NMath_Core_NMathConfiguration.htm

最后,请使用 NMathConfiguration.LogLocation 生成日志文件。生成的日志文件会告诉您出了什么问题。

  • 特雷弗
于 2013-11-07T22:13:20.580 回答