Asp.Net应用程序中的Mathematica .Net/Link

Jam*_* IV 7 .net c# asp.net wolfram-mathematica

我正在使用Mathematica .Net/Link平台创建一个Web服务来格式化和计算数学问题.但是我无法让它工作.

我使用以下代码创建它:

_Log.IpDebug("Starting the Kernel Link");
if (string.IsNullOrEmpty(_MathLinkArguments))
   _InternelKernel = MathLinkFactory.CreateKernelLink();
else
   _InternelKernel = MathLinkFactory.CreateKernelLink(_MathLinkArguments);
_Log.IpDebug("Kernel Link Started");
_InternelKernel.WaitAndDiscardAnswer();
Run Code Online (Sandbox Code Playgroud)

价值_MathLinkArguments-linkmode launch -linkname \"C:\\Program Files\\Wolfram Research\\Mathematica\\7.0\\Math.exe\".

这段代码是从Application_Startglobal.asax.cs文件的方法调用的.

当它到达WaitAndDiscardAnswer()调用时它会给出服务器错误:

Error code: 11. Connected MathLink program has closed the link, but there might still be data underway. 
Run Code Online (Sandbox Code Playgroud)

注意:使用.NET/Link包(控制台应用程序和WinForms应用程序)提供的SampleCode可以正常工作.

编辑:我将Mathematica提供的控制台应用程序示例代码复制到一个asp.net页面,它在第一次加载时给了我同样的错误,然后在它给我的后续加载中:

Error code: 1. MathLink connection was lost.
Run Code Online (Sandbox Code Playgroud)

编辑2:我忘了提到当我在运行我的应用程序时打开procmon和任务管理器时,我可以告诉Math.exe启动但它会立即退出,这使得这些错误代码完全有意义...但不解释为什么那事发生了.

Jam*_* IV 3

要允许 .Net/Link 在 Asp.net 中工作(至少在 IIS 7.5 中),您需要loadUserProfile在网站的应用程序池上启用该属性。

我不完全确定为什么会出现这种情况,但从我在尝试调试此问题时发现的情况来看,有一些内容是从用户的个人资料中获取的。我知道内核的默认位置是,这解释了为什么我不能在没有参数的情况下使用它,所以我只能假设还需要其他东西,并且没有配置文件它无法确定。

但无论出于什么原因,这是必需的,或者至少是一个修复,如果您在自己的应用程序中遇到类似的问题。