ASP.NET MapPath

时间:2009-03-26 06:19:18

标签: asp.net string

我有一部分代码如下:

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发挥得更好?

1 个答案:

答案 0 :(得分:2)

调用MapPath后的值或'dir'是什么?抛出什么异常?工作进程可能没有执行batch.bat文件的权限。

如果没有更多细节,很难给出明确的答案。

编辑您是否考虑过Quartz.NET无法访问HttpContext.Current,因此MapPath无法解析?

Edit2 是否可以使用AppDomain.CurrentDomain.BaseDirectory来确定所需的路径而不是〜(tilda)替换?我也看到了对System.Web.Hosting.HostingEnvironment.MapPath()的引用,你也可以试试。