Код C#, который я смоделировал на основе рабочего веб-приложения, созданного нашей командой, следующий:
Код: Выделить всё
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = HttpContext.Current.Server.MapPath(".") + "\\MyFolder\\MyProgram.exe";
psi.WorkingDirectory = HttpContext.Current.Server.MapPath(".") + "\\MyFolder";
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
if (System.IO.File.Exists(psi.FileName)
&& System.IO.Directory.Exists(psi.WorkingDirectory))
{
try
{
using (System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi))
{
// This launches the console app
}
Label1.Text = "Executable file at " + psi.FileName + " was called.";
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}
}
else
{
Label1.Text = psi.FileName + " was not found, or the directory " +
psi.WorkingDirectory + " does not exist.";
}
Но когда я публикую решение на веб-сервере и запускаю его там, это не удается. Элемент управления asp:Label отображает сообщение о том, что исполняемый файл был вызван, указывая, что путь к MyFolder на сервере действителен и исполняемый файл существует, но всплывающее окно не появляется и текстовый файл не записывается, что позволяет предположить, что исполняемый файл никогда не запускается.
Веб-сервер тот же, на котором запускаются другие наши приложения с теми же настройками разрешений, включая некоторые веб-приложения, которые вызывают исполняемые файлы с использованием кода, аналогичного показанному коду C#. выше. Я не могу понять, чем отличается моя ситуация.
Подробнее здесь: https://stackoverflow.com/questions/785 ... et-website
Мобильная версия