【问题标题】:Execute *.exe from .net web application in Windows Server 2012 R2在 Windows Server 2012 R2 中从 .net Web 应用程序执行 *.exe
【发布时间】:2016-08-04 00:43:24
【问题描述】:

我从我的 Web 应用程序运行 wkhtmltopdf.exe 时遇到问题,我的 Web 应用程序已部署到 Windows Server 2012 上。似乎我的应用程序池没有执行此操作的权限,尽管 Web 应用程序和 exe 都不会引发任何错误。它根本不执行。

到目前为止我做了什么:

  • 从属性 -> 安全
  • 授予应用程序池对 exe 和与其相关的所有目录的完全权限
  • 试图在应用程序池中使用除应用程序池标识之外的其他标识
  • 试图通过 WCF 和 Windows 服务执行它
  • 将工作目录中的所有文件、文件夹设置为非只读
  • 设置exe以管理员身份运行

我使用 procexp 来查看 exe 是否被执行,但它没有 - 没有 wkhtmltopdf.exe 进程出现在后台。我不需要显示 UI,我只需要在后台运行它并让它完成它的工作 - 从 html 生成 pdf。

当我从命令行手动运行这个 exe 时,它​​工作正常。 我还将我的 Web 应用程序部署到另一台 win 2012 r2 服务器上,使用默认设置和应用程序池标识创建新的应用程序池,设置文件/文件夹和 exe 的权限。令人惊讶的是它在那里工作。

所以我认为我错过了一些东西,但我无法弄清楚。我认为第一台服务器在 ASPUSER 或 IIS 或管理员权限等方面有某种特殊配置。

有谁知道如何确定应用程序池是否对其用户具有 *.exe 执行权限?或者这个问题对某人来说似乎很熟悉?是否可以明确告诉 IIS 或应用程序池不要运行 exe?

【问题讨论】:

    标签: .net permissions exe application-pool iis-8.5


    【解决方案1】:

    假设您使用的是 C# 或 VB.NET: 见:How to use wkhtmltopdf.exe in ASP.net

    您可以使用 .NET dll 包装器,我认为这是一种更简洁的解决方案,然后从 C# 或 VB.NET 执行 exe 文件。这也允许您调试调用。

    【讨论】:

    • 外部包装器目前对我没有帮助。 Wrappers 最终将与我做同样的事情——在 wkhtmltopdf.exe 上调用 Process.Start。我基本上写了自己的包装器。
    • 这是 DLL 而非可执行文件的包装。所以它不会为 wkhtmltopdf.exe 调用 Process.Start
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多