2 votes

MATLAB Builder NE plante apppool sur IIS 7.5

Je suis en train de développer une interface utilisateur web pour les fonctions MATLAB avec ASP.NET. J'ai commencé par étudier les démos et je me suis heurté à ce problème.

J'ai créé un assemblage MyComponent.dll avec deploytool à partir de MATLAB 2010a, cadre cible - 3.5. Ce composant possède une fonction GetKnot() qui renvoie une figure.

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

J'ai ensuite créé une webapp simple dans visual studio 2008 sp1, avec une seule page Default.aspx. J'ai ajouté des références à MWArray.dll, WebFiguresService.dll et MyComponent.dll. Le codeBehind est le suivant :

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();
        }
    }
}

Lorsque j'exécute cette page sur le serveur web de développement de Visual Studio - tout va bien, la figure fonctionne.

Mais lorsque j'essaie de déployer webfigure sur mon iis 7.5 local qui fonctionne sous Win7 x32 - le pool d'applications iis se bloque. Il y a une entrée dans le journal des événements système "Un processus servant le pool d'applications 'Classic .NET AppPool' a subi une erreur de communication fatale avec le service d'activation de processus Windows. L'identifiant du processus est '3676'. Le champ de données contient le numéro d'erreur 6D000780". Cela se produit lors de l'instanciation de MyComponent.

Qu'est-ce que je pourrais oublier lors du passage à IIS ?

D'autres exemples, comme l'application console magic square, fonctionnent parfaitement, et chaque composant matlab s'instancie, mais pas dans l'environnement IIS.

Edit : J'ai déployé une machine virtuelle avec Windows 7 et MATLAB 2009b, et j'ai essayé le même exemple. Tout fonctionne bien :(. Peut-être est-ce un problème lié à MATLAB 2010 ?

3voto

David Ipsen Points 564

J'ai rencontré exactement le même problème (le MCR faisait planter les AppPools dans Windows Server 2008). Il semble qu'il s'agisse d'un problème entre le MCR et IIS 7. Après avoir contacté le support Mathworks, ils m'ont informé que le problème est causé par un bug dans le MCR (concernant les permissions de l'identité AppPool "NetworkService"). J'ai reçu les suggestions suivantes :

Pour contourner ce problème, vous pouvez suivre l'une des deux étapes suivantes :

  1. Créez une variable d'environnement appelée MATLAB_PREFDIR et faites en sorte qu'elle pointe vers un répertoire où NETWORK SERVICE a un accès en écriture. Ou bien,

  2. Créez un nouveau pool d'applications qui fonctionne sous l'identité "LocalSystem" (regardez sous "Advanced Settings..." du pool d'applications). Configurez ensuite votre application pour qu'elle utilise ce pool d'applications ("Basic Settings..." de votre application).

J'ai appliqué la deuxième suggestion et cela a réglé mon problème. J'espère que cela sera utile à quelqu'un d'autre qui rencontre le même problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X