2

对于我的一个项目,我需要将 .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 甚至不知道如何运行该文件。如果是这样,那么有人可以告诉我如何创建正确的处理程序映射,以便我可以查看他的解决方案是否正确?

谢谢。

4

1 回答 1

0

64位操作系统?如果是这样,也许您正在进行一些重定向。如果它是 32 位应用程序,您应该指定 %ProgramFiles(x86)%。最好检查并使用适当的,以便它可以在 32 位或 64 位上运行。

您是否从 UNC 位置执行(在某些较新的操作系统上需要考虑,并且在 Win 8 和 2012 服务器上可能不可行)?

将此作为 bat 文件中的第一条语句:

echo.CD=%cd% & pause
于 2013-02-24T00:37:22.510 回答