在IIS 7.5中获取已部署的MVC页面。从命令行运行批处理文件

时间:2013-01-01 03:25:51

标签: .net command-line batch-file iis-7.5 web-deployment

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

感谢。

1 个答案:

答案 0 :(得分:0)

64位操作系统?如果是这样,也许你有一些重定向。如果它是32位应用程序,则应指定%ProgramFiles(x86)%。最好检查并使用适当的一个,使其适用于32位或64位。

您是从UNC位置执行的(需要考虑一些较新的操作系统,在Win 8和2012 Server上可能无法实现)?

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

echo.CD=%cd% & pause