2016-03-11 4 views
0

Я хочу изменить физический путь приложения, запущенного на моем IIS 7, из другого приложения, которое работает на моем IIS. Я попытался сделать это с помощью appcmd.exe. Однако это кажется невозможным из-за отсутствия авторизации от приложения asp.net.Программный логический путь приложения IIS 7

Это в основном то, что я пытаюсь сделать

private static string Execute(string IISAppName, string NewIISPath) 
    { 
     var winPath = Environment.GetFolderPath(Environment.SpecialFolder.Windows); 
     var appcmdPath = Path.Combine(winPath, "system32", "inetsrv/appcmd.exe"); 

     var arg = "set app /app.name:\"" + IISAppName + "\" /[path='/'].physicalPath:" + NewIISPath; 

     ProcessStartInfo startInfo = new ProcessStartInfo(appcmdPath, arg) 
     { 
      WindowStyle = ProcessWindowStyle.Hidden, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = true 
     }; 

     Process process = Process.Start(startInfo); 
     var textResult = process.StandardOutput.ReadToEnd(); 
     process.WaitForExit(); 
     return textResult; 
    }  

textResult пустая строка.

Любые идеи?

ответ

0

AppPool для сайта ASP.NET должен быть настроен для запуска в качестве пользователя с правами администратора в поле для выполнения этого сценария. Практически во всех случаях это плохая идея по соображениям безопасности.