ASP.NET MapPath - PullRequest
       9

ASP.NET MapPath

0 голосов
/ 26 марта 2009

У меня есть часть кода, подобная этой:

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")

Почему?

edit: Код работает в обработчике события нажатия кнопки. Это не работает, когда это запланированная работа Quartz.NET. Это всегда работает, когда у меня есть абсолютный путь. Поэтому мой вопрос, вероятно, таков: как мне заставить Quartz.NET и MapPath играть хорошо?

1 Ответ

2 голосов
/ 26 марта 2009

Какое значение или «dir» после вызова MapPath? Какое исключение бросает? Возможно, рабочий процесс не имеет разрешения на выполнение файла batch.bat.

Без дополнительных подробностей трудно дать точный ответ.

Редактировать Рассматривали ли вы тот факт, что Quartz.NET не имеет доступа к HttpContext.Current и, следовательно, MapPath не будет разрешаться?

Edit2 Можно ли использовать AppDomain.CurrentDomain.BaseDirectory для определения желаемого пути вместо подстановки ~ (tilda)? Я также видел ссылки на System.Web.Hosting.HostingEnvironment.MapPath (), которые вы также можете попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...