Невозможно сгенерировать файл из ASP.NET с помощью inkscape - PullRequest
2 голосов
/ 11 октября 2010

У меня на локальном компьютере работает приложение ASP.NET.Это приложение берет файл SVG и создает из него PNG, используя inkscape.Я попытался перенести это приложение на свой рабочий сервер.Как ни странно, создание png не работает.Действительно странная часть в том, что Exception также не выбрасывается.Я взял параметры командной строки, которые создаются и копируются, вставил их в среду командной строки, и они работают.Например, вот строка:

inkscape.exe -f "C:\inetpub\wwwroot\MyTest\sample.svg" -e "C:\inetpub\wwwroot\MyTest\sample.png"

Я подумал, что это что-то простое, поэтому я извлек код в пример веб-проекта.Этот проект просто конвертирует .svg в .png.Еще раз, это работало в моей локальной среде, но не в производственной среде.Вот код:

protected void executeButton_Click(object sender, EventArgs e)
{
    try
    {
        string sourceFile = Server.MapPath("svg") + "\\" + ConfigurationManager.AppSettings["sourceFile"];
        string targetFile = Server.MapPath("png") + "\\" + ConfigurationManager.AppSettings["targetFile"];

        string args = "-f \"" + sourceFile + "\" -e \"" + targetFile + "\" -w100 -h40";
        string inkscape = ConfigurationManager.AppSettings["inkscapeExe"];

        // Generate the png via inkscape
        ProcessStartInfo inkscapeInfo = new ProcessStartInfo(inkscape, args);
        Process inkscape = Process.Start(inkscapeInfo);
        inkscape.WaitForExit(5000);

        runLiteral.Text = "Success!<br />" + args;
    }
    catch (Exception ex)
    {
        runLiteral.Text = ex.GetType().FullName + "<br />" + ex.Message + "<br />" + ex.StackTrace;
    }
}

Может кто-нибудь сказать мне, что я делаю неправильно?

Спасибо!

1 Ответ

1 голос
/ 12 октября 2010

Несколько вещей, которые нужно проверить:

  • Убедитесь, что удостоверение пула приложений для веб-приложения (обычно находящегося в IIS, обычно NetworkService) имеет разрешения на выполнение inkscape.exe
  • Если это нормально, убедитесь, что каталог предоставляет разрешения на изменение идентификатора приложения в каталог (и), в который вы записываете PNG ("C: \ inetpub \ wwwroot \ MyTest")
  • В качестве альтернативывы можете использовать олицетворение для запуска исполняемого файла под определенной учетной записью Windows.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...