【问题标题】:Starting a c# program from a wep api fails从 web api 启动 c# 程序失败
【发布时间】:2019-05-14 18:30:45
【问题描述】:

我正在尝试从 wep api 启动一个 c# 程序。 当我在 Visual Studio 开发下尝试这个时,它会运行。 在 IIS 上发布后,程序无法启动。 我没有收到任何错误,它永远不会在 catch 块中运行。 为什么“process.Start”不起作用?

public class ServerController : ApiController
{

    [ActionName("starthilfe")]
    public Info GetHelp()
    {
        Info inf = new Info();
        try
        {
            Process P = new Process();
            P.StartInfo.FileName = @"D:\Videos\Deutsch\WindowsFormsApp1.exe";
            P.Start();
            inf.TextFeld1 = "Hilfe erfolgreich gestartet";
            return inf;
        }
        catch (Exception ex)
        {
            inf.TextFeld1 = "EXEPTION";
            inf.TextFeld2 = ex.Message;
            return inf;
        }
    }
}

【问题讨论】:

  • 检查应用池的权限。
  • 我该怎么做。对不起,我不是专业人士。
  • 为什么要让 web api 在运行该 API 的服务器上启动 WindowsFormsApp1.exe
  • 因为我需要它。

标签: asp.net web-services


【解决方案1】:

首先,我会检查您在运行应用程序的服务器上遇到了哪些权限问题。 其次,我认为您的问题的核心是,当您在调试模式下运行 Web 应用程序时,您正在运行。但是当您发布到 IIS 时,您最有可能以 IUser 身份运行。 IIs 网站的特殊用户。 This堆栈溢出文章可以帮助您弄清楚您的 IUser 拥有哪些权利。解决方法是为应用程序创建另一个用户,该用户具有比 IUser 更多的权限。只是提醒更改您的 Web 应用程序使用的用户可能会产生安全隐患。所以你要小心

【讨论】:

  • 我将包含程序的文件夹的所有权限设置为所有人都可以完全访问。
  • 因为这不是权限问题,而是与您的 win forms 应用程序的性质有关。当您不从网站调用应用程序时,该应用程序是否在服务器上运行,这可能意味着您缺少 DLL 或配置文件。您的应用程序是否提示输入,因为 IIS 不会弹出窗口供您查看?请记住,它是以 IIS 用户身份登录的,该 IIS 用户没有桌面。
  • 感谢您的帮助,但现在我厌倦了处理该项目。我将在前端实现我的帮助系统。使用旧的 c# 程序会很好,因为它对我们来说几乎是完美的。
猜你喜欢
  • 2019-06-14
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 2018-11-22
相关资源
最近更新 更多