【问题标题】:ASP.NET MapPathASP.NET 地图路径
【发布时间】:2009-03-26 14:48:07
【问题描述】:

我有一段这样的代码:

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

【问题讨论】:

  • 错误信息是什么?听起来它与权限有关。 “~/Other/”映射到什么?

标签: asp.net string


【解决方案1】:

调用 MapPath 后的值或“目录”是什么?抛出什么异常?可能是worker进程没有执行batch.bat文件的权限。

没有更多的细节,很难给你一个明确的答案。

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

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

【讨论】:

  • System.Web.Hosting.HostingEnvironment.MapPath() 效果很好 - 谢谢
  • 来自未来的感谢!效果很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多