【问题标题】:I get exit code "1", when run a process on IIS在 IIS 上运行进程时,我得到退出代码“1”
【发布时间】:2018-10-29 14:48:26
【问题描述】:

我想调用我的 Windows 机器上的 .exe。我将站点发布到“C:\inetpub\wwwroot”内的文件夹中,并且可以从外部调用 API。问题是当我在 IIS Express 上从 VS 运行代码时,进程的退出代码为 0 并且 exe 成功执行,但是当我从外部调用 Action Result 并在 IIS 上运行时,状态代码为 1 并且有显然这个过程调用有问题:这是我的代码:

public async Task<ActionResult> url2img(string url)
    {
        Process proc = new Process();
        proc.StartInfo.FileName = @"C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage.exe";
        proc.StartInfo.Arguments = $"--encoding utf-8 \"{url}\" {FilePath}";
        proc.Start();
        proc.WaitForExit();

        object oJSON = new { procStatusCode = proc.ExitCode };

        proc.Close();

        return Json(oJSON, JsonRequestBehavior.AllowGet);
    }

我找到了this thread,并阅读了 OP 提出的答案,但我在 IIS 中找不到“加载 Windows 配置文件”,而且我不确定这是否与他的问题相同?有什么帮助吗?

【问题讨论】:

    标签: c# .net asp.net-mvc iis process


    【解决方案1】:

    我运行了示例,调用 Close() 后 ExitCode 不再有效。因此无效操作。

    【讨论】:

    • 编辑问题
    【解决方案2】:

    我认为,您的 iis 用户没有权限。可能你想检查这个链接:Foo.cmd won't output lines in process (on website)

    【讨论】:

    • 我已经回答了我的问题并且它有效,但是谢谢!明天我会标记它,当我有权利的时候。
    【解决方案3】:

    我必须将 DefaultAppPool 的标识设置为 LocalSystem

    【讨论】:

    • 仅仅因为它有效并不意味着它是一个好主意。将 iis 作为 Localsystem 运行是非常糟糕的做法,您应该使用必要的权限配置您的应用程序池身份。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2021-10-18
    相关资源
    最近更新 更多