Eu mesmo encontrei a solução. Eu postei minhas descobertas em StackOverflow .
Na verdade, acabou sendo um problema do usuário do AppPool do IIS, então postar a pergunta aqui não era totalmente sem esperanças.
Eu tenho uma situação onde eu preciso executar um programa .cmd no meu site IIS. É um programa de terceiros para validar e transferir arquivos, por isso não posso escolher de outra forma.
Eu faço isso iniciando o programa em um novo processo programaticamente.
Seguir esta abordagem com um arquivo .exe funciona perfeitamente. Eu recebo a saída padrão do programa. Mas isso não é o caso quando tento fazer o mesmo com o arquivo .cmd. Nenhuma saída padrão é recebida.
O código funciona perfeitamente no meu computador local, então acho que o problema está na configuração do IIS. Provavelmente restrições de usuário ou arquivo.
Alguém poderia me guiar na direção certa?
EDIT Aqui está o código C # que eu uso.
ProcessStartInfo info = new ProcessStartInfo();
info.WindowStyle = ProcessWindowStyle.Hidden;
info.CreateNoWindow = true;
info.FileName = AppDomain.CurrentDomain.BaseDirectory + @"export\foo.cmd";
//replacing foo.cmd with foo.exe works
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
using (Process process = Process.Start(info))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Response.Write(result);
}
}
Eu mesmo encontrei a solução. Eu postei minhas descobertas em StackOverflow .
Na verdade, acabou sendo um problema do usuário do AppPool do IIS, então postar a pergunta aqui não era totalmente sem esperanças.