[英]Mathematica .Net/Link in an Asp.Net application
我正在使用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 Files\\\\Wolfram Research\\\\Mathematica\\\\7.0\\\\Math.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並查看錯誤消息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.