对于我的一个项目,我需要将 .NET 页面与对 MATLAB 进程的外部调用集成。为了做到这一点(并且不花任何钱),我创建了一个批处理文件,由 .NET 页面本身(ASP.NET MVC 3,如果有的话)调用,它基本上包含一行——即启动 MATLAB 并运行此过程。
该过程的结束本身会将信息吐出到一个文本文件中,然后关闭 MATLAB。当 .NET 页面看到文件已创建时,它会抓取它并根据在该文件中找到的数据进行一些计算。这个过程在我的本地机器上运行良好,当我从服务器上的 VS 2012(调试模式)运行它时。
有趣的部分来自于部署这个站点。我已经成功地将我的网站部署到互联网上,除了这个过程之外,它上面的一切都运行良好。它似乎根本没有运行。包含此批处理文件的目录附加了所有必要的权限(IUSR 和 IIS_IUSRS),但似乎根本没有运行。
谁能告诉我如何让这个批处理文件在 IIS 7.5 上托管的网页中正常运行?是的,我确实知道这不是安全方面最好的想法,但我只需要完成这件事。
编辑:这是调用该过程的代码:
var matlabProcess = new Process {
StartInfo = {
FileName = "C:\\Program Files\\MATLAB\\R2012a\\bin\\WebCall.bat",
Arguments = string.Format("{0} {1}", seeds, weights)
}
};
matlabProcess.Start();
批处理文件包含以下内容:
cd\
cd progra~1\MATLAB\r2012a\bin
start matlab -nosplash -nodesktop -minimize -r WebCall(%1,%2)
编辑:我的一个朋友建议这失败的原因是因为 IIS 上没有批处理文件的处理程序,因此 IIS 甚至不知道如何运行该文件。如果是这样,那么有人可以告诉我如何创建正确的处理程序映射,以便我可以查看他的解决方案是否正确?
谢谢。