我有一部分代码如下:
Process proc = null;
try
{
proc = new Process();
string dir = HttpContext.Current.Server.MapPath("~/Other/");
proc.StartInfo.WorkingDirectory = dir;
p.StartInfo.FileName = "batch.bat";
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit();
}
catch (Exception e) { }
只有在用“
”替换“dir”时才会有效string.Format(@"C:\AbsolutePathHere")
为什么?
编辑:代码适用于按钮点击事件处理程序。当它是一个计划的Quartz.NET作业时,它不起作用。当我有绝对路径时,它总是有效。所以我的问题可能是:我如何让Quartz.NET和MapPath发挥得更好?
答案 0 :(得分:2)
调用MapPath后的值或'dir'是什么?抛出什么异常?工作进程可能没有执行batch.bat文件的权限。
如果没有更多细节,很难给出明确的答案。
编辑您是否考虑过Quartz.NET无法访问HttpContext.Current,因此MapPath无法解析?
Edit2 是否可以使用AppDomain.CurrentDomain.BaseDirectory来确定所需的路径而不是〜(tilda)替换?我也看到了对System.Web.Hosting.HostingEnvironment.MapPath()的引用,你也可以试试。