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

我正在使用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();

_MathLinkArguments的值是-linkmode launch -linkname "C:Program FilesWolfram ResearchMathematica7.0Math.exe"

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

当它进入WaitAndDiscardAnswer()调用时,它给出服务器错误:

Error code: 11. Connected MathLink program has closed the link, but there might still be data underway. 

注意:使用.NET / Link包(控制台应用程序和WinForms应用程序)给出的SampleCode可以工作。

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

Error code: 1. MathLink connection was lost.

编辑2:我忘记提及,当我运行我的应用程序时打开procmon和任务管理器,我可以知道Math.exe已启动,但立即退出,这使得这些错误代码变得完整无缺......但并不能解释为什么那事发生了。


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

我不完全确定为什么会出现这种情况,但从我在尝试调试时发现的情况来看,有些事情是从用户的配置文件中获得的。 我知道内核的默认位置是这个事实,这就解释了为什么我不能在没有参数的情况下使用它,所以我只能假定还需要其他东西,如果没有配置文件,它不能确定。

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


我在.Net WinForm应用程序中遇到了同样的错误。

mathKernel = new MathKernel();
mathKernel.Compute("<< XYZ`XYZGraphs`");  

实例化MathKernel后直接加载包时发生错误。

为了解决它,你可以等待几秒钟,然后实例化MathKernel工作正常。 在此状态下,可能仍有数据正在进行中,以下情况都是错误的:

if (!MathKernel.IsConnected)
{
    MathKernel.Connect();
}

if (MathKernel.IsComputing)
{
    MathKernel.Abort();
}

编辑:

我再次收到错误,这次能够确定问题。

使用命令行打开MathKernel.exe并查看错误消息:

在这里输入图像描述

链接地址: http://www.djcxy.com/p/51185.html

上一篇: Mathematica .Net/Link in an Asp.Net application

下一篇: How to send email with multiple addresses in C#