2 votes

Obtenir une page MVC déployée dans IIS 7.5. pour exécuter un fichier batch à partir de la ligne de commande

Pour l'un de mes projets, j'avais besoin d'intégrer une page .NET avec un appel externe à un processus MATLAB. Pour ce faire (sans dépenser d'argent), j'ai créé un fichier batch à appeler par la page .NET elle-même (ASP.NET MVC 3, si cela a de l'importance) qui contient essentiellement une ligne - celle qui permet de lancer MATLAB et d'exécuter ce processus.

La fin du processus proprement dit crache des informations dans un fichier texte, puis ferme MATLAB. Lorsque la page .NET voit que le fichier a été créé, elle le saisit et effectue des calculs basés sur les données trouvées dans ce fichier. Ce processus fonctionne parfaitement sur ma machine locale et lorsque je l'exécute depuis VS 2012 (en mode débogage) sur le serveur.

La partie amusante vient avec le déploiement de ce site. J'ai réussi à déployer mon site sur Internet, et tout fonctionne bien, sauf pour ce processus. Il semble qu'il ne fonctionne pas du tout. Le répertoire qui contient ce fichier batch possède toutes les autorisations nécessaires (IUSR et IIS_IUSRS), mais il ne semble pas s'exécuter du tout.

Quelqu'un peut-il me dire comment faire pour que ce fichier batch s'exécute correctement dans une page Web hébergée sur IIS 7.5 ? Et oui, je sais que ce n'est pas la meilleure des idées du point de vue de la sécurité, mais j'ai juste besoin de le faire.

EDIT : Voici le code pour appeler le processus :

var matlabProcess = new Process {
    StartInfo = {
        FileName = "C:\\Program Files\\MATLAB\\R2012a\\bin\\WebCall.bat", 
        Arguments = string.Format("{0} {1}", seeds, weights)
    }
};

matlabProcess.Start();

Le fichier batch contient les éléments suivants :

cd\
cd progra~1\MATLAB\r2012a\bin
start matlab -nosplash -nodesktop -minimize -r WebCall(%1,%2)

EDIT : Un de mes amis a suggéré que la raison de cet échec est qu'il n'y a pas de gestionnaire sur IIS pour un fichier batch, et donc IIS n'a aucune idée de comment exécuter ce fichier. Si c'est le cas, quelqu'un peut-il me dire comment créer un mappage de gestionnaire approprié afin que je puisse voir si sa solution est correcte ?

Merci.

0voto

RGuggisberg Points 3821

Système d'exploitation 64 bits ? Si c'est le cas, vous avez peut-être une redirection en cours. S'il s'agit d'une application 32 bits, vous devriez spécifier %ProgramFiles(x86)%. Il est préférable de vérifier et d'utiliser l'option appropriée pour que l'application fonctionne aussi bien en 32 qu'en 64 bits.

Est-ce que vous exécutez à partir d'un emplacement UNC (cela nécessite des considérations sur certains systèmes d'exploitation plus récents et peut ne pas être possible sur Win 8 et 2012 Server) ?

Mettez ceci comme première déclaration dans le fichier bat :

echo.CD=%cd% & pause

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