【问题标题】:Not creating background worker for a particular user不为特定用户创建后台工作人员
【发布时间】:2016-06-06 15:47:42
【问题描述】:

我有一个用 C# 制作的桌面应用程序。该应用程序通过 SSH 连接到 Solaris 服务器并在那里执行某些作业。应用程序的登录基于用于登录 Solaris 服务器的用户凭据。当用户输入他的 Solaris 凭据时,它会访问服务器并检查凭据是否正确。

问题是,应用程序在后台工作人员中运行作业。对于大多数用户,应用程序运行良好,但对于特定用户,myworker.RunWorkerAsync() 不起作用,这意味着控制权永远不会传递给 do_work。

我尝试在另一台机器上调试它,但结果仍然相同。所以,它不是系统特定的问题,但我不明白为什么每个人都正确创建并运行后台工作人员,但只针对特定用户而不是。

【问题讨论】:

  • 如果您希望我们帮助您编写代码,您应该展示您的代码。另外,当你调试它时你发现了什么。如果您在后台工作方法的第一行设置断点,断点是否会被命中?如果是这样,它会在哪一行引发异常并失败?
  • 这个用户登录成功了吗?他们是否有权访问您正在尝试执行的任何操作
  • 我把断点放在do worker中,控制就在里面。我从他们那里通过 ssh 与 Solaris 服务器建立了连接。然后我从那里运行一个特定的任务。在调试时,运行任务时出现“SshOperationTimeoutException”异常。当我运行该应用程序时,winform 中的 throbber/animated image 继续移动,并且工作继续进行,就好像它在无限循环中运行并且没有任何反应。

标签: c# .net ssh backgroundworker


【解决方案1】:

如果它适用于除一两个人之外的所有人,那么您需要检查的是这些人的帐户。它们要么不起作用/禁用,要么配置与其他配置不同。

尝试区分工作用户和非工作用户的个人资料,看看有什么区别,然后尝试协调它们。

另一种方法是使用失败的帐户并尝试应用程序通过您最喜欢的 ssh 工具手动执行的所有确切步骤。

另外,请始终确保正确捕获错误:Unhandled exceptions in BackgroundWorker

【讨论】:

  • 我把断点放在do worker中,控制就在里面。我从他们那里通过 ssh 与 solaris 服务器建立了连接。然后我从那里运行一个特定的任务。在调试时,运行任务时出现“SshOperationTimeoutException”异常。当我运行应用程序时,winform 中的 throbber/动画图像继续移动,并且工作继续进行,就好像它在无限循环中运行并且没有任何反应
  • 我可以连接 putty 并在终端中运行相同的命令。
  • 问题出在 bash 配置文件上。更改了 bash 配置文件,它适用于用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2014-04-14
  • 2016-07-09
相关资源
最近更新 更多