2010-05-31 64 views
2

我正在开发ASP.NET的MATLAB函数的Web用户界面。我已经开始研究演示并解决这个问题。在IIS 7.5 MATLAB的MATLAB生成器NE崩溃的应用程序池

我用MATLAB 2010a中的deploytool创建了一个MyComponent.dll程序集,目标框架-3.5。该组件有一个函数Ge​​tKnot(),它返回一个数字。

function df = getKnot() 
    f = figure('Visible', 'off'); 
    knot; 
    df = webfigure(f); 
    close(f); 
end 

然后我在Visual Studio 2008 SP1中做了简单的webapp,只有一个页面Default.aspx。 我添加了对MWArray.dll,WebFiguresService.dll和MyComponent.dll的引用。 代码隐藏是:

using System; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using MyComponent; 
using MathWorks.MATLAB.NET.WebFigures; 

namespace MATLAB_WebApplication 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      var myComponentClass = new MyComponentClass(); 
      var x = myComponentClass.getKnot(); 
      WebFigureControl1.WebFigure = new WebFigure(); 
     } 
    } 
} 

当我视觉Studio`s开发Web服务器上运行这个页面 - 一切都很好,人物的作品。

但是,当我尝试在我的本地iis 7.5上运行Win7 x32上部署webfigure时,iis应用程序池崩溃。系统事件日志中有一个条目“进程服务应用程序池'Classic .NET AppPool'遇到与Windows进程激活服务的致命通信错误,进程ID为'3676',数据字段包含错误号6D000780”。当MyComponent正在实例化时会发生这种情况。

什么我可以忘记当移动到IIS?

其他示例,如幻方控制台应用程序,运行完美,每个matlab组件实例化,但不在IIS环境中。

编辑:我部署了一个虚拟机与Windows 7和MATLAB 2009b,并尝试了同样的例子。一切正常。 :(也许它的MATLAB 2010问题?

回答

3

我遇到了同样的问题(MCR崩溃了Windows Server 2008中的AppPools),它似乎是MCR和IIS 7之间的问题。 。他们告诉我,这是由在MCR(有关的“网络服务”应用程序池身份的权限)的错误引起的,我收到了以下建议:

要解决的问题,你可以使用任何一种以下两个步骤:

  1. 创建一个名为MA的环境变量TLAB_PREFDIR并让它指向NETWORK SERVICE具有写访问权限的目录。或者,

  2. 创建一个以“LocalSystem”身份运行的新应用程序池(请参阅应用程序池的“高级设置...”)。然后将您的应用程序配置为使用此应用程序池(应用程序的“基本设置...”)。

我申请的第二项建议,并将其固定我的问题。我希望这对于那些遇到同样问题的其他人有帮助。

+0

你不必再希望了。这非常有帮助。谢谢 – Mariusz 2016-08-29 15:55:35

+0

根据MatWorks网站的设置,MATLAB_PREFDIR变量可能有多种副作用,除非绝对必要,不建议使用: http://uk.mathworks.com/matlabcentral/answers/93696-how-do-i-change -the-MATLAB的喜好目录定位 – Mariusz 2016-08-30 09:30:21